(0) Obligation:

JBC Problem based on JBC Program:
Manifest-Version: 1.0 Created-By: 1.6.0_20 (Apple Inc.) Main-Class: Test9
public class Test9 {
public static void main(String[] args) {
long l = args.length;

while (l > 0) {
for (int i = (int) l ; i < 100; i++)
test(i);
l--;
}
}

private static void test(int i) {
int j, k, l, m;

for (j = i; j > 0; j--);
for (k = i; k > 0; k--);
for (l = i; l > 0; l--);
for (m = i; m > 0; m--);
for (j = i; j > 0; j--);
for (k = i; k > 0; k--);
for (l = i; l > 0; l--);
for (m = i; m > 0; m--);
for (j = i; j > 0; j--);
for (k = i; k > 0; k--);
for (l = i; l > 0; l--);
for (m = i; m > 0; m--);
}
}

(1) JBC2FIG (SOUND transformation)

Constructed FIGraph.

(2) Obligation:

FIGraph based on JBC Program:
Test9.main([Ljava/lang/String;)V: Graph of 37 nodes with 1 SCC.

Test9.test(I)V: Graph of 122 nodes with 12 SCCs.


(3) FIGtoITRSProof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Logs:


Log for SCC 0:

Generated 6 rules for P and 2 rules for R.


Combined rules. Obtained 1 rules for P and 1 rules for R.


Filtered ground terms:


465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return

Filtered duplicate args:


465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)

Combined rules. Obtained 1 rules for P and 1 rules for R.


Finished conversion. Obtained 1 rules for P and 1 rules for R. System has predefined symbols.




Log for SCC 1:

Generated 6 rules for P and 13 rules for R.


Combined rules. Obtained 1 rules for P and 3 rules for R.


Filtered ground terms:


426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return

Filtered duplicate args:


426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)

Combined rules. Obtained 1 rules for P and 3 rules for R.


Finished conversion. Obtained 1 rules for P and 3 rules for R. System has predefined symbols.




Log for SCC 2:

Generated 6 rules for P and 24 rules for R.


Combined rules. Obtained 1 rules for P and 5 rules for R.


Filtered ground terms:


386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)

Filtered duplicate args:


386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)

Combined rules. Obtained 1 rules for P and 5 rules for R.


Finished conversion. Obtained 1 rules for P and 5 rules for R. System has predefined symbols.




Log for SCC 3:

Generated 6 rules for P and 35 rules for R.


Combined rules. Obtained 1 rules for P and 7 rules for R.


Filtered ground terms:


354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)

Filtered duplicate args:


354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)

Combined rules. Obtained 1 rules for P and 7 rules for R.


Finished conversion. Obtained 1 rules for P and 7 rules for R. System has predefined symbols.




Log for SCC 4:

Generated 6 rules for P and 46 rules for R.


Combined rules. Obtained 1 rules for P and 9 rules for R.


Filtered ground terms:


319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)

Filtered duplicate args:


319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)

Combined rules. Obtained 1 rules for P and 9 rules for R.


Finished conversion. Obtained 1 rules for P and 9 rules for R. System has predefined symbols.




Log for SCC 5:

Generated 6 rules for P and 57 rules for R.


Combined rules. Obtained 1 rules for P and 11 rules for R.


Filtered ground terms:


285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)

Filtered duplicate args:


285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)

Combined rules. Obtained 1 rules for P and 11 rules for R.


Finished conversion. Obtained 1 rules for P and 11 rules for R. System has predefined symbols.




Log for SCC 6:

Generated 6 rules for P and 68 rules for R.


Combined rules. Obtained 1 rules for P and 13 rules for R.


Filtered ground terms:


248_0_test_LE(x1, x2, x3, x4) → 248_0_test_LE(x2, x3, x4)
Cond_248_0_test_LE(x1, x2, x3, x4, x5) → Cond_248_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)

Filtered duplicate args:


248_0_test_LE(x1, x2, x3) → 248_0_test_LE(x1, x3)
Cond_248_0_test_LE(x1, x2, x3, x4) → Cond_248_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)

Combined rules. Obtained 1 rules for P and 13 rules for R.


Finished conversion. Obtained 1 rules for P and 13 rules for R. System has predefined symbols.




Log for SCC 7:

Generated 6 rules for P and 79 rules for R.


Combined rules. Obtained 1 rules for P and 15 rules for R.


Filtered ground terms:


221_0_test_LE(x1, x2, x3, x4) → 221_0_test_LE(x2, x3, x4)
Cond_221_0_test_LE(x1, x2, x3, x4, x5) → Cond_221_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)
248_0_test_LE(x1, x2, x3, x4) → 248_0_test_LE(x2, x3, x4)
Cond_248_0_test_LE(x1, x2, x3, x4, x5) → Cond_248_0_test_LE(x1, x3, x4, x5)

Filtered duplicate args:


221_0_test_LE(x1, x2, x3) → 221_0_test_LE(x1, x3)
Cond_221_0_test_LE(x1, x2, x3, x4) → Cond_221_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)
248_0_test_LE(x1, x2, x3) → 248_0_test_LE(x1, x3)
Cond_248_0_test_LE(x1, x2, x3, x4) → Cond_248_0_test_LE(x1, x2, x4)

Combined rules. Obtained 1 rules for P and 15 rules for R.


Finished conversion. Obtained 1 rules for P and 15 rules for R. System has predefined symbols.




Log for SCC 8:

Generated 6 rules for P and 90 rules for R.


Combined rules. Obtained 1 rules for P and 17 rules for R.


Filtered ground terms:


193_0_test_LE(x1, x2, x3, x4) → 193_0_test_LE(x2, x3, x4)
Cond_193_0_test_LE(x1, x2, x3, x4, x5) → Cond_193_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)
248_0_test_LE(x1, x2, x3, x4) → 248_0_test_LE(x2, x3, x4)
Cond_248_0_test_LE(x1, x2, x3, x4, x5) → Cond_248_0_test_LE(x1, x3, x4, x5)
221_0_test_LE(x1, x2, x3, x4) → 221_0_test_LE(x2, x3, x4)
Cond_221_0_test_LE(x1, x2, x3, x4, x5) → Cond_221_0_test_LE(x1, x3, x4, x5)

Filtered duplicate args:


193_0_test_LE(x1, x2, x3) → 193_0_test_LE(x1, x3)
Cond_193_0_test_LE(x1, x2, x3, x4) → Cond_193_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)
248_0_test_LE(x1, x2, x3) → 248_0_test_LE(x1, x3)
Cond_248_0_test_LE(x1, x2, x3, x4) → Cond_248_0_test_LE(x1, x2, x4)
221_0_test_LE(x1, x2, x3) → 221_0_test_LE(x1, x3)
Cond_221_0_test_LE(x1, x2, x3, x4) → Cond_221_0_test_LE(x1, x2, x4)

Combined rules. Obtained 1 rules for P and 17 rules for R.


Finished conversion. Obtained 1 rules for P and 17 rules for R. System has predefined symbols.




Log for SCC 9:

Generated 6 rules for P and 101 rules for R.


Combined rules. Obtained 1 rules for P and 19 rules for R.


Filtered ground terms:


162_0_test_LE(x1, x2, x3, x4) → 162_0_test_LE(x2, x3, x4)
Cond_162_0_test_LE(x1, x2, x3, x4, x5) → Cond_162_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)
248_0_test_LE(x1, x2, x3, x4) → 248_0_test_LE(x2, x3, x4)
Cond_248_0_test_LE(x1, x2, x3, x4, x5) → Cond_248_0_test_LE(x1, x3, x4, x5)
221_0_test_LE(x1, x2, x3, x4) → 221_0_test_LE(x2, x3, x4)
Cond_221_0_test_LE(x1, x2, x3, x4, x5) → Cond_221_0_test_LE(x1, x3, x4, x5)
193_0_test_LE(x1, x2, x3, x4) → 193_0_test_LE(x2, x3, x4)
Cond_193_0_test_LE(x1, x2, x3, x4, x5) → Cond_193_0_test_LE(x1, x3, x4, x5)

Filtered duplicate args:


162_0_test_LE(x1, x2, x3) → 162_0_test_LE(x1, x3)
Cond_162_0_test_LE(x1, x2, x3, x4) → Cond_162_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)
248_0_test_LE(x1, x2, x3) → 248_0_test_LE(x1, x3)
Cond_248_0_test_LE(x1, x2, x3, x4) → Cond_248_0_test_LE(x1, x2, x4)
221_0_test_LE(x1, x2, x3) → 221_0_test_LE(x1, x3)
Cond_221_0_test_LE(x1, x2, x3, x4) → Cond_221_0_test_LE(x1, x2, x4)
193_0_test_LE(x1, x2, x3) → 193_0_test_LE(x1, x3)
Cond_193_0_test_LE(x1, x2, x3, x4) → Cond_193_0_test_LE(x1, x2, x4)

Combined rules. Obtained 1 rules for P and 19 rules for R.


Finished conversion. Obtained 1 rules for P and 19 rules for R. System has predefined symbols.




Log for SCC 10:

Generated 6 rules for P and 112 rules for R.


Combined rules. Obtained 1 rules for P and 21 rules for R.


Filtered ground terms:


130_0_test_LE(x1, x2, x3, x4) → 130_0_test_LE(x2, x3, x4)
Cond_130_0_test_LE(x1, x2, x3, x4, x5) → Cond_130_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)
248_0_test_LE(x1, x2, x3, x4) → 248_0_test_LE(x2, x3, x4)
Cond_248_0_test_LE(x1, x2, x3, x4, x5) → Cond_248_0_test_LE(x1, x3, x4, x5)
221_0_test_LE(x1, x2, x3, x4) → 221_0_test_LE(x2, x3, x4)
Cond_221_0_test_LE(x1, x2, x3, x4, x5) → Cond_221_0_test_LE(x1, x3, x4, x5)
193_0_test_LE(x1, x2, x3, x4) → 193_0_test_LE(x2, x3, x4)
Cond_193_0_test_LE(x1, x2, x3, x4, x5) → Cond_193_0_test_LE(x1, x3, x4, x5)
162_0_test_LE(x1, x2, x3, x4) → 162_0_test_LE(x2, x3, x4)
Cond_162_0_test_LE(x1, x2, x3, x4, x5) → Cond_162_0_test_LE(x1, x3, x4, x5)

Filtered duplicate args:


130_0_test_LE(x1, x2, x3) → 130_0_test_LE(x1, x3)
Cond_130_0_test_LE(x1, x2, x3, x4) → Cond_130_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)
248_0_test_LE(x1, x2, x3) → 248_0_test_LE(x1, x3)
Cond_248_0_test_LE(x1, x2, x3, x4) → Cond_248_0_test_LE(x1, x2, x4)
221_0_test_LE(x1, x2, x3) → 221_0_test_LE(x1, x3)
Cond_221_0_test_LE(x1, x2, x3, x4) → Cond_221_0_test_LE(x1, x2, x4)
193_0_test_LE(x1, x2, x3) → 193_0_test_LE(x1, x3)
Cond_193_0_test_LE(x1, x2, x3, x4) → Cond_193_0_test_LE(x1, x2, x4)
162_0_test_LE(x1, x2, x3) → 162_0_test_LE(x1, x3)
Cond_162_0_test_LE(x1, x2, x3, x4) → Cond_162_0_test_LE(x1, x2, x4)

Combined rules. Obtained 1 rules for P and 21 rules for R.


Finished conversion. Obtained 1 rules for P and 21 rules for R. System has predefined symbols.




Log for SCC 11:

Generated 6 rules for P and 123 rules for R.


Combined rules. Obtained 1 rules for P and 23 rules for R.


Filtered ground terms:


97_0_test_LE(x1, x2, x3, x4) → 97_0_test_LE(x2, x3, x4)
Cond_97_0_test_LE(x1, x2, x3, x4, x5) → Cond_97_0_test_LE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
471_0_test_Return(x1) → 471_0_test_Return
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)
248_0_test_LE(x1, x2, x3, x4) → 248_0_test_LE(x2, x3, x4)
Cond_248_0_test_LE(x1, x2, x3, x4, x5) → Cond_248_0_test_LE(x1, x3, x4, x5)
221_0_test_LE(x1, x2, x3, x4) → 221_0_test_LE(x2, x3, x4)
Cond_221_0_test_LE(x1, x2, x3, x4, x5) → Cond_221_0_test_LE(x1, x3, x4, x5)
193_0_test_LE(x1, x2, x3, x4) → 193_0_test_LE(x2, x3, x4)
Cond_193_0_test_LE(x1, x2, x3, x4, x5) → Cond_193_0_test_LE(x1, x3, x4, x5)
162_0_test_LE(x1, x2, x3, x4) → 162_0_test_LE(x2, x3, x4)
Cond_162_0_test_LE(x1, x2, x3, x4, x5) → Cond_162_0_test_LE(x1, x3, x4, x5)
130_0_test_LE(x1, x2, x3, x4) → 130_0_test_LE(x2, x3, x4)
Cond_130_0_test_LE(x1, x2, x3, x4, x5) → Cond_130_0_test_LE(x1, x3, x4, x5)

Filtered duplicate args:


97_0_test_LE(x1, x2, x3) → 97_0_test_LE(x1, x3)
Cond_97_0_test_LE(x1, x2, x3, x4) → Cond_97_0_test_LE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)
248_0_test_LE(x1, x2, x3) → 248_0_test_LE(x1, x3)
Cond_248_0_test_LE(x1, x2, x3, x4) → Cond_248_0_test_LE(x1, x2, x4)
221_0_test_LE(x1, x2, x3) → 221_0_test_LE(x1, x3)
Cond_221_0_test_LE(x1, x2, x3, x4) → Cond_221_0_test_LE(x1, x2, x4)
193_0_test_LE(x1, x2, x3) → 193_0_test_LE(x1, x3)
Cond_193_0_test_LE(x1, x2, x3, x4) → Cond_193_0_test_LE(x1, x2, x4)
162_0_test_LE(x1, x2, x3) → 162_0_test_LE(x1, x3)
Cond_162_0_test_LE(x1, x2, x3, x4) → Cond_162_0_test_LE(x1, x2, x4)
130_0_test_LE(x1, x2, x3) → 130_0_test_LE(x1, x3)
Cond_130_0_test_LE(x1, x2, x3, x4) → Cond_130_0_test_LE(x1, x2, x4)

Combined rules. Obtained 1 rules for P and 23 rules for R.


Finished conversion. Obtained 1 rules for P and 23 rules for R. System has predefined symbols.




Log for SCC 12:

Generated 27 rules for P and 137 rules for R.


Combined rules. Obtained 3 rules for P and 25 rules for R.


Filtered ground terms:


48_0_main_GE(x1, x2, x3, x4, x5) → 48_0_main_GE(x2, x3, x4)
Cond_48_0_main_GE1(x1, x2, x3, x4, x5, x6) → Cond_48_0_main_GE1(x1, x3, x4, x5)
Cond_56_1_main_InvokeMethod(x1, x2, x3, x4, x5) → Cond_56_1_main_InvokeMethod(x1, x3, x4, x5)
471_0_test_Return(x1) → 471_0_test_Return
56_0_test_Load(x1, x2) → 56_0_test_Load(x2)
Cond_48_0_main_GE(x1, x2, x3, x4, x5, x6) → Cond_48_0_main_GE(x1, x3, x4, x5)
465_0_test_LE(x1, x2, x3) → 465_0_test_LE(x2, x3)
Cond_465_0_test_LE(x1, x2, x3, x4) → Cond_465_0_test_LE(x1, x3, x4)
426_0_test_LE(x1, x2, x3, x4) → 426_0_test_LE(x2, x3, x4)
Cond_426_0_test_LE(x1, x2, x3, x4, x5) → Cond_426_0_test_LE(x1, x3, x4, x5)
386_0_test_LE(x1, x2, x3, x4) → 386_0_test_LE(x2, x3, x4)
Cond_386_0_test_LE(x1, x2, x3, x4, x5) → Cond_386_0_test_LE(x1, x3, x4, x5)
354_0_test_LE(x1, x2, x3, x4) → 354_0_test_LE(x2, x3, x4)
Cond_354_0_test_LE(x1, x2, x3, x4, x5) → Cond_354_0_test_LE(x1, x3, x4, x5)
319_0_test_LE(x1, x2, x3, x4) → 319_0_test_LE(x2, x3, x4)
Cond_319_0_test_LE(x1, x2, x3, x4, x5) → Cond_319_0_test_LE(x1, x3, x4, x5)
285_0_test_LE(x1, x2, x3, x4) → 285_0_test_LE(x2, x3, x4)
Cond_285_0_test_LE(x1, x2, x3, x4, x5) → Cond_285_0_test_LE(x1, x3, x4, x5)
248_0_test_LE(x1, x2, x3, x4) → 248_0_test_LE(x2, x3, x4)
Cond_248_0_test_LE(x1, x2, x3, x4, x5) → Cond_248_0_test_LE(x1, x3, x4, x5)
221_0_test_LE(x1, x2, x3, x4) → 221_0_test_LE(x2, x3, x4)
Cond_221_0_test_LE(x1, x2, x3, x4, x5) → Cond_221_0_test_LE(x1, x3, x4, x5)
193_0_test_LE(x1, x2, x3, x4) → 193_0_test_LE(x2, x3, x4)
Cond_193_0_test_LE(x1, x2, x3, x4, x5) → Cond_193_0_test_LE(x1, x3, x4, x5)
162_0_test_LE(x1, x2, x3, x4) → 162_0_test_LE(x2, x3, x4)
Cond_162_0_test_LE(x1, x2, x3, x4, x5) → Cond_162_0_test_LE(x1, x3, x4, x5)
130_0_test_LE(x1, x2, x3, x4) → 130_0_test_LE(x2, x3, x4)
Cond_130_0_test_LE(x1, x2, x3, x4, x5) → Cond_130_0_test_LE(x1, x3, x4, x5)
97_0_test_LE(x1, x2, x3, x4) → 97_0_test_LE(x2, x3, x4)
Cond_97_0_test_LE(x1, x2, x3, x4, x5) → Cond_97_0_test_LE(x1, x3, x4, x5)

Filtered duplicate args:


48_0_main_GE(x1, x2, x3) → 48_0_main_GE(x1, x3)
Cond_48_0_main_GE1(x1, x2, x3, x4) → Cond_48_0_main_GE1(x1, x2, x4)
Cond_56_1_main_InvokeMethod(x1, x2, x3, x4) → Cond_56_1_main_InvokeMethod(x1, x2, x4)
56_1_main_InvokeMethod(x1, x2, x3, x4) → 56_1_main_InvokeMethod(x1, x2, x4)
Cond_48_0_main_GE(x1, x2, x3, x4) → Cond_48_0_main_GE(x1, x2, x4)
465_0_test_LE(x1, x2) → 465_0_test_LE(x2)
Cond_465_0_test_LE(x1, x2, x3) → Cond_465_0_test_LE(x1, x3)
426_0_test_LE(x1, x2, x3) → 426_0_test_LE(x1, x3)
Cond_426_0_test_LE(x1, x2, x3, x4) → Cond_426_0_test_LE(x1, x2, x4)
386_0_test_LE(x1, x2, x3) → 386_0_test_LE(x1, x3)
Cond_386_0_test_LE(x1, x2, x3, x4) → Cond_386_0_test_LE(x1, x2, x4)
354_0_test_LE(x1, x2, x3) → 354_0_test_LE(x1, x3)
Cond_354_0_test_LE(x1, x2, x3, x4) → Cond_354_0_test_LE(x1, x2, x4)
319_0_test_LE(x1, x2, x3) → 319_0_test_LE(x1, x3)
Cond_319_0_test_LE(x1, x2, x3, x4) → Cond_319_0_test_LE(x1, x2, x4)
285_0_test_LE(x1, x2, x3) → 285_0_test_LE(x1, x3)
Cond_285_0_test_LE(x1, x2, x3, x4) → Cond_285_0_test_LE(x1, x2, x4)
248_0_test_LE(x1, x2, x3) → 248_0_test_LE(x1, x3)
Cond_248_0_test_LE(x1, x2, x3, x4) → Cond_248_0_test_LE(x1, x2, x4)
221_0_test_LE(x1, x2, x3) → 221_0_test_LE(x1, x3)
Cond_221_0_test_LE(x1, x2, x3, x4) → Cond_221_0_test_LE(x1, x2, x4)
193_0_test_LE(x1, x2, x3) → 193_0_test_LE(x1, x3)
Cond_193_0_test_LE(x1, x2, x3, x4) → Cond_193_0_test_LE(x1, x2, x4)
162_0_test_LE(x1, x2, x3) → 162_0_test_LE(x1, x3)
Cond_162_0_test_LE(x1, x2, x3, x4) → Cond_162_0_test_LE(x1, x2, x4)
130_0_test_LE(x1, x2, x3) → 130_0_test_LE(x1, x3)
Cond_130_0_test_LE(x1, x2, x3, x4) → Cond_130_0_test_LE(x1, x2, x4)
97_0_test_LE(x1, x2, x3) → 97_0_test_LE(x1, x3)
Cond_97_0_test_LE(x1, x2, x3, x4) → Cond_97_0_test_LE(x1, x2, x4)

Filtered unneeded arguments:


Cond_48_0_main_GE1(x1, x2, x3) → Cond_48_0_main_GE1(x1, x2)

Combined rules. Obtained 3 rules for P and 25 rules for R.


Finished conversion. Obtained 3 rules for P and 25 rules for R. System has predefined symbols.


(4) Complex Obligation (AND)

(5) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
465_0_test_LE(0) → 471_0_test_Return

The integer pair graph contains the following rules and edges:
(0): 465_0_TEST_LE(x0[0]) → COND_465_0_TEST_LE(x0[0] > 0, x0[0])
(1): COND_465_0_TEST_LE(TRUE, x0[1]) → 465_0_TEST_LE(x0[1] + -1)

(0) -> (1), if ((x0[0] > 0* TRUE)∧(x0[0]* x0[1]))


(1) -> (0), if ((x0[1] + -1* x0[0]))



The set Q consists of the following terms:
465_0_test_LE(0)

(6) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 465_0_TEST_LE(x0) → COND_465_0_TEST_LE(>(x0, 0), x0) the following chains were created:
  • We consider the chain 465_0_TEST_LE(x0[0]) → COND_465_0_TEST_LE(>(x0[0], 0), x0[0]), COND_465_0_TEST_LE(TRUE, x0[1]) → 465_0_TEST_LE(+(x0[1], -1)) which results in the following constraint:

    (1)    (>(x0[0], 0)=TRUEx0[0]=x0[1]465_0_TEST_LE(x0[0])≥NonInfC∧465_0_TEST_LE(x0[0])≥COND_465_0_TEST_LE(>(x0[0], 0), x0[0])∧(UIncreasing(COND_465_0_TEST_LE(>(x0[0], 0), x0[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x0[0], 0)=TRUE465_0_TEST_LE(x0[0])≥NonInfC∧465_0_TEST_LE(x0[0])≥COND_465_0_TEST_LE(>(x0[0], 0), x0[0])∧(UIncreasing(COND_465_0_TEST_LE(>(x0[0], 0), x0[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_465_0_TEST_LE(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_10] + [(2)bni_10]x0[0] ≥ 0∧[(-1)bso_11] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_465_0_TEST_LE(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_10] + [(2)bni_10]x0[0] ≥ 0∧[(-1)bso_11] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_465_0_TEST_LE(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_10] + [(2)bni_10]x0[0] ≥ 0∧[(-1)bso_11] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x0[0] ≥ 0 ⇒ (UIncreasing(COND_465_0_TEST_LE(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_10 + (2)bni_10] + [(2)bni_10]x0[0] ≥ 0∧[(-1)bso_11] ≥ 0)







For Pair COND_465_0_TEST_LE(TRUE, x0) → 465_0_TEST_LE(+(x0, -1)) the following chains were created:
  • We consider the chain COND_465_0_TEST_LE(TRUE, x0[1]) → 465_0_TEST_LE(+(x0[1], -1)) which results in the following constraint:

    (7)    (COND_465_0_TEST_LE(TRUE, x0[1])≥NonInfC∧COND_465_0_TEST_LE(TRUE, x0[1])≥465_0_TEST_LE(+(x0[1], -1))∧(UIncreasing(465_0_TEST_LE(+(x0[1], -1))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    ((UIncreasing(465_0_TEST_LE(+(x0[1], -1))), ≥)∧[2 + (-1)bso_13] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    ((UIncreasing(465_0_TEST_LE(+(x0[1], -1))), ≥)∧[2 + (-1)bso_13] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    ((UIncreasing(465_0_TEST_LE(+(x0[1], -1))), ≥)∧[2 + (-1)bso_13] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    ((UIncreasing(465_0_TEST_LE(+(x0[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_13] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 465_0_TEST_LE(x0) → COND_465_0_TEST_LE(>(x0, 0), x0)
    • (x0[0] ≥ 0 ⇒ (UIncreasing(COND_465_0_TEST_LE(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_10 + (2)bni_10] + [(2)bni_10]x0[0] ≥ 0∧[(-1)bso_11] ≥ 0)

  • COND_465_0_TEST_LE(TRUE, x0) → 465_0_TEST_LE(+(x0, -1))
    • ((UIncreasing(465_0_TEST_LE(+(x0[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_13] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(465_0_test_LE(x1)) = [-1]   
POL(0) = 0   
POL(471_0_test_Return) = [-1]   
POL(465_0_TEST_LE(x1)) = [2]x1   
POL(COND_465_0_TEST_LE(x1, x2)) = [2]x2   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   

The following pairs are in P>:

COND_465_0_TEST_LE(TRUE, x0[1]) → 465_0_TEST_LE(+(x0[1], -1))

The following pairs are in Pbound:

465_0_TEST_LE(x0[0]) → COND_465_0_TEST_LE(>(x0[0], 0), x0[0])

The following pairs are in P:

465_0_TEST_LE(x0[0]) → COND_465_0_TEST_LE(>(x0[0], 0), x0[0])

There are no usable rules.

(7) Complex Obligation (AND)

(8) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
465_0_test_LE(0) → 471_0_test_Return

The integer pair graph contains the following rules and edges:
(0): 465_0_TEST_LE(x0[0]) → COND_465_0_TEST_LE(x0[0] > 0, x0[0])


The set Q consists of the following terms:
465_0_test_LE(0)

(9) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(10) TRUE

(11) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
465_0_test_LE(0) → 471_0_test_Return

The integer pair graph contains the following rules and edges:
(1): COND_465_0_TEST_LE(TRUE, x0[1]) → 465_0_TEST_LE(x0[1] + -1)


The set Q consists of the following terms:
465_0_test_LE(0)

(12) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(13) TRUE

(14) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 426_0_TEST_LE(x0[0], x1[0]) → COND_426_0_TEST_LE(x1[0] > 0, x0[0], x1[0])
(1): COND_426_0_TEST_LE(TRUE, x0[1], x1[1]) → 426_0_TEST_LE(x0[1], x1[1] + -1)

(0) -> (1), if ((x1[0] > 0* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (0), if ((x0[1]* x0[0])∧(x1[1] + -1* x1[0]))



The set Q consists of the following terms:
426_0_test_LE(x0, 0)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(15) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 426_0_TEST_LE(x0, x1) → COND_426_0_TEST_LE(>(x1, 0), x0, x1) the following chains were created:
  • We consider the chain 426_0_TEST_LE(x0[0], x1[0]) → COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_426_0_TEST_LE(TRUE, x0[1], x1[1]) → 426_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (1)    (>(x1[0], 0)=TRUEx0[0]=x0[1]x1[0]=x1[1]426_0_TEST_LE(x0[0], x1[0])≥NonInfC∧426_0_TEST_LE(x0[0], x1[0])≥COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x1[0], 0)=TRUE426_0_TEST_LE(x0[0], x1[0])≥NonInfC∧426_0_TEST_LE(x0[0], x1[0])≥COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_14] + [(2)bni_14]x1[0] ≥ 0∧[(-1)bso_15] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_14] + [(2)bni_14]x1[0] ≥ 0∧[(-1)bso_15] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_14] + [(2)bni_14]x1[0] ≥ 0∧[(-1)bso_15] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_14 + (2)bni_14] + [(2)bni_14]x1[0] ≥ 0∧[(-1)bso_15] ≥ 0)







For Pair COND_426_0_TEST_LE(TRUE, x0, x1) → 426_0_TEST_LE(x0, +(x1, -1)) the following chains were created:
  • We consider the chain COND_426_0_TEST_LE(TRUE, x0[1], x1[1]) → 426_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (7)    (COND_426_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_426_0_TEST_LE(TRUE, x0[1], x1[1])≥426_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(426_0_TEST_LE(x0[1], +(x1[1], -1))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    ((UIncreasing(426_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_17] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    ((UIncreasing(426_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_17] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    ((UIncreasing(426_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_17] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    ((UIncreasing(426_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_17] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 426_0_TEST_LE(x0, x1) → COND_426_0_TEST_LE(>(x1, 0), x0, x1)
    • (x1[0] ≥ 0 ⇒ (UIncreasing(COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_14 + (2)bni_14] + [(2)bni_14]x1[0] ≥ 0∧[(-1)bso_15] ≥ 0)

  • COND_426_0_TEST_LE(TRUE, x0, x1) → 426_0_TEST_LE(x0, +(x1, -1))
    • ((UIncreasing(426_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_17] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(426_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(426_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_426_0_TEST_LE(x1, x2, x3)) = [2]x3   

The following pairs are in P>:

COND_426_0_TEST_LE(TRUE, x0[1], x1[1]) → 426_0_TEST_LE(x0[1], +(x1[1], -1))

The following pairs are in Pbound:

426_0_TEST_LE(x0[0], x1[0]) → COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

The following pairs are in P:

426_0_TEST_LE(x0[0], x1[0]) → COND_426_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

There are no usable rules.

(16) Complex Obligation (AND)

(17) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 426_0_TEST_LE(x0[0], x1[0]) → COND_426_0_TEST_LE(x1[0] > 0, x0[0], x1[0])


The set Q consists of the following terms:
426_0_test_LE(x0, 0)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(18) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(19) TRUE

(20) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(1): COND_426_0_TEST_LE(TRUE, x0[1], x1[1]) → 426_0_TEST_LE(x0[1], x1[1] + -1)


The set Q consists of the following terms:
426_0_test_LE(x0, 0)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(21) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(22) TRUE

(23) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 386_0_TEST_LE(x0[0], x1[0]) → COND_386_0_TEST_LE(x1[0] > 0, x0[0], x1[0])
(1): COND_386_0_TEST_LE(TRUE, x0[1], x1[1]) → 386_0_TEST_LE(x0[1], x1[1] + -1)

(0) -> (1), if ((x1[0] > 0* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (0), if ((x0[1]* x0[0])∧(x1[1] + -1* x1[0]))



The set Q consists of the following terms:
386_0_test_LE(x0, 0)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(24) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 386_0_TEST_LE(x0, x1) → COND_386_0_TEST_LE(>(x1, 0), x0, x1) the following chains were created:
  • We consider the chain 386_0_TEST_LE(x0[0], x1[0]) → COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_386_0_TEST_LE(TRUE, x0[1], x1[1]) → 386_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (1)    (>(x1[0], 0)=TRUEx0[0]=x0[1]x1[0]=x1[1]386_0_TEST_LE(x0[0], x1[0])≥NonInfC∧386_0_TEST_LE(x0[0], x1[0])≥COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x1[0], 0)=TRUE386_0_TEST_LE(x0[0], x1[0])≥NonInfC∧386_0_TEST_LE(x0[0], x1[0])≥COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_16] + [(2)bni_16]x1[0] ≥ 0∧[(-1)bso_17] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_16] + [(2)bni_16]x1[0] ≥ 0∧[(-1)bso_17] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_16] + [(2)bni_16]x1[0] ≥ 0∧[(-1)bso_17] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_16 + (2)bni_16] + [(2)bni_16]x1[0] ≥ 0∧[(-1)bso_17] ≥ 0)







For Pair COND_386_0_TEST_LE(TRUE, x0, x1) → 386_0_TEST_LE(x0, +(x1, -1)) the following chains were created:
  • We consider the chain COND_386_0_TEST_LE(TRUE, x0[1], x1[1]) → 386_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (7)    (COND_386_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_386_0_TEST_LE(TRUE, x0[1], x1[1])≥386_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(386_0_TEST_LE(x0[1], +(x1[1], -1))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    ((UIncreasing(386_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_19] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    ((UIncreasing(386_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_19] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    ((UIncreasing(386_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_19] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    ((UIncreasing(386_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_19] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 386_0_TEST_LE(x0, x1) → COND_386_0_TEST_LE(>(x1, 0), x0, x1)
    • (x1[0] ≥ 0 ⇒ (UIncreasing(COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_16 + (2)bni_16] + [(2)bni_16]x1[0] ≥ 0∧[(-1)bso_17] ≥ 0)

  • COND_386_0_TEST_LE(TRUE, x0, x1) → 386_0_TEST_LE(x0, +(x1, -1))
    • ((UIncreasing(386_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_19] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(386_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(386_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_386_0_TEST_LE(x1, x2, x3)) = [2]x3   

The following pairs are in P>:

COND_386_0_TEST_LE(TRUE, x0[1], x1[1]) → 386_0_TEST_LE(x0[1], +(x1[1], -1))

The following pairs are in Pbound:

386_0_TEST_LE(x0[0], x1[0]) → COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

The following pairs are in P:

386_0_TEST_LE(x0[0], x1[0]) → COND_386_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

There are no usable rules.

(25) Complex Obligation (AND)

(26) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 386_0_TEST_LE(x0[0], x1[0]) → COND_386_0_TEST_LE(x1[0] > 0, x0[0], x1[0])


The set Q consists of the following terms:
386_0_test_LE(x0, 0)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(27) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(28) TRUE

(29) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(1): COND_386_0_TEST_LE(TRUE, x0[1], x1[1]) → 386_0_TEST_LE(x0[1], x1[1] + -1)


The set Q consists of the following terms:
386_0_test_LE(x0, 0)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(30) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(31) TRUE

(32) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 354_0_TEST_LE(x0[0], x1[0]) → COND_354_0_TEST_LE(x1[0] > 0, x0[0], x1[0])
(1): COND_354_0_TEST_LE(TRUE, x0[1], x1[1]) → 354_0_TEST_LE(x0[1], x1[1] + -1)

(0) -> (1), if ((x1[0] > 0* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (0), if ((x0[1]* x0[0])∧(x1[1] + -1* x1[0]))



The set Q consists of the following terms:
354_0_test_LE(x0, 0)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(33) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 354_0_TEST_LE(x0, x1) → COND_354_0_TEST_LE(>(x1, 0), x0, x1) the following chains were created:
  • We consider the chain 354_0_TEST_LE(x0[0], x1[0]) → COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_354_0_TEST_LE(TRUE, x0[1], x1[1]) → 354_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (1)    (>(x1[0], 0)=TRUEx0[0]=x0[1]x1[0]=x1[1]354_0_TEST_LE(x0[0], x1[0])≥NonInfC∧354_0_TEST_LE(x0[0], x1[0])≥COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x1[0], 0)=TRUE354_0_TEST_LE(x0[0], x1[0])≥NonInfC∧354_0_TEST_LE(x0[0], x1[0])≥COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_17] + [(2)bni_17]x1[0] ≥ 0∧[(-1)bso_18] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_17] + [(2)bni_17]x1[0] ≥ 0∧[(-1)bso_18] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_17] + [(2)bni_17]x1[0] ≥ 0∧[(-1)bso_18] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_17 + (2)bni_17] + [(2)bni_17]x1[0] ≥ 0∧[(-1)bso_18] ≥ 0)







For Pair COND_354_0_TEST_LE(TRUE, x0, x1) → 354_0_TEST_LE(x0, +(x1, -1)) the following chains were created:
  • We consider the chain COND_354_0_TEST_LE(TRUE, x0[1], x1[1]) → 354_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (7)    (COND_354_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_354_0_TEST_LE(TRUE, x0[1], x1[1])≥354_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(354_0_TEST_LE(x0[1], +(x1[1], -1))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    ((UIncreasing(354_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_20] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    ((UIncreasing(354_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_20] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    ((UIncreasing(354_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_20] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    ((UIncreasing(354_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_20] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 354_0_TEST_LE(x0, x1) → COND_354_0_TEST_LE(>(x1, 0), x0, x1)
    • (x1[0] ≥ 0 ⇒ (UIncreasing(COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_17 + (2)bni_17] + [(2)bni_17]x1[0] ≥ 0∧[(-1)bso_18] ≥ 0)

  • COND_354_0_TEST_LE(TRUE, x0, x1) → 354_0_TEST_LE(x0, +(x1, -1))
    • ((UIncreasing(354_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_20] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(354_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(354_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_354_0_TEST_LE(x1, x2, x3)) = [2]x3   

The following pairs are in P>:

COND_354_0_TEST_LE(TRUE, x0[1], x1[1]) → 354_0_TEST_LE(x0[1], +(x1[1], -1))

The following pairs are in Pbound:

354_0_TEST_LE(x0[0], x1[0]) → COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

The following pairs are in P:

354_0_TEST_LE(x0[0], x1[0]) → COND_354_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

There are no usable rules.

(34) Complex Obligation (AND)

(35) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 354_0_TEST_LE(x0[0], x1[0]) → COND_354_0_TEST_LE(x1[0] > 0, x0[0], x1[0])


The set Q consists of the following terms:
354_0_test_LE(x0, 0)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(36) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(37) TRUE

(38) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(1): COND_354_0_TEST_LE(TRUE, x0[1], x1[1]) → 354_0_TEST_LE(x0[1], x1[1] + -1)


The set Q consists of the following terms:
354_0_test_LE(x0, 0)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(39) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(40) TRUE

(41) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 319_0_TEST_LE(x0[0], x1[0]) → COND_319_0_TEST_LE(x1[0] > 0, x0[0], x1[0])
(1): COND_319_0_TEST_LE(TRUE, x0[1], x1[1]) → 319_0_TEST_LE(x0[1], x1[1] + -1)

(0) -> (1), if ((x1[0] > 0* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (0), if ((x0[1]* x0[0])∧(x1[1] + -1* x1[0]))



The set Q consists of the following terms:
319_0_test_LE(x0, 0)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(42) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 319_0_TEST_LE(x0, x1) → COND_319_0_TEST_LE(>(x1, 0), x0, x1) the following chains were created:
  • We consider the chain 319_0_TEST_LE(x0[0], x1[0]) → COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_319_0_TEST_LE(TRUE, x0[1], x1[1]) → 319_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (1)    (>(x1[0], 0)=TRUEx0[0]=x0[1]x1[0]=x1[1]319_0_TEST_LE(x0[0], x1[0])≥NonInfC∧319_0_TEST_LE(x0[0], x1[0])≥COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x1[0], 0)=TRUE319_0_TEST_LE(x0[0], x1[0])≥NonInfC∧319_0_TEST_LE(x0[0], x1[0])≥COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_21] + [(2)bni_21]x1[0] ≥ 0∧[(-1)bso_22] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_21] + [(2)bni_21]x1[0] ≥ 0∧[(-1)bso_22] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_21] + [(2)bni_21]x1[0] ≥ 0∧[(-1)bso_22] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_21 + (2)bni_21] + [(2)bni_21]x1[0] ≥ 0∧[(-1)bso_22] ≥ 0)







For Pair COND_319_0_TEST_LE(TRUE, x0, x1) → 319_0_TEST_LE(x0, +(x1, -1)) the following chains were created:
  • We consider the chain COND_319_0_TEST_LE(TRUE, x0[1], x1[1]) → 319_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (7)    (COND_319_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_319_0_TEST_LE(TRUE, x0[1], x1[1])≥319_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(319_0_TEST_LE(x0[1], +(x1[1], -1))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    ((UIncreasing(319_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_24] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    ((UIncreasing(319_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_24] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    ((UIncreasing(319_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_24] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    ((UIncreasing(319_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_24] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 319_0_TEST_LE(x0, x1) → COND_319_0_TEST_LE(>(x1, 0), x0, x1)
    • (x1[0] ≥ 0 ⇒ (UIncreasing(COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_21 + (2)bni_21] + [(2)bni_21]x1[0] ≥ 0∧[(-1)bso_22] ≥ 0)

  • COND_319_0_TEST_LE(TRUE, x0, x1) → 319_0_TEST_LE(x0, +(x1, -1))
    • ((UIncreasing(319_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_24] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(319_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(319_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_319_0_TEST_LE(x1, x2, x3)) = [2]x3   

The following pairs are in P>:

COND_319_0_TEST_LE(TRUE, x0[1], x1[1]) → 319_0_TEST_LE(x0[1], +(x1[1], -1))

The following pairs are in Pbound:

319_0_TEST_LE(x0[0], x1[0]) → COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

The following pairs are in P:

319_0_TEST_LE(x0[0], x1[0]) → COND_319_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

There are no usable rules.

(43) Complex Obligation (AND)

(44) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 319_0_TEST_LE(x0[0], x1[0]) → COND_319_0_TEST_LE(x1[0] > 0, x0[0], x1[0])


The set Q consists of the following terms:
319_0_test_LE(x0, 0)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(45) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(46) TRUE

(47) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(1): COND_319_0_TEST_LE(TRUE, x0[1], x1[1]) → 319_0_TEST_LE(x0[1], x1[1] + -1)


The set Q consists of the following terms:
319_0_test_LE(x0, 0)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(48) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(49) TRUE

(50) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 285_0_TEST_LE(x0[0], x1[0]) → COND_285_0_TEST_LE(x1[0] > 0, x0[0], x1[0])
(1): COND_285_0_TEST_LE(TRUE, x0[1], x1[1]) → 285_0_TEST_LE(x0[1], x1[1] + -1)

(0) -> (1), if ((x1[0] > 0* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (0), if ((x0[1]* x0[0])∧(x1[1] + -1* x1[0]))



The set Q consists of the following terms:
285_0_test_LE(x0, 0)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(51) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 285_0_TEST_LE(x0, x1) → COND_285_0_TEST_LE(>(x1, 0), x0, x1) the following chains were created:
  • We consider the chain 285_0_TEST_LE(x0[0], x1[0]) → COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_285_0_TEST_LE(TRUE, x0[1], x1[1]) → 285_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (1)    (>(x1[0], 0)=TRUEx0[0]=x0[1]x1[0]=x1[1]285_0_TEST_LE(x0[0], x1[0])≥NonInfC∧285_0_TEST_LE(x0[0], x1[0])≥COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x1[0], 0)=TRUE285_0_TEST_LE(x0[0], x1[0])≥NonInfC∧285_0_TEST_LE(x0[0], x1[0])≥COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_22] + [(2)bni_22]x1[0] ≥ 0∧[(-1)bso_23] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_22] + [(2)bni_22]x1[0] ≥ 0∧[(-1)bso_23] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_22] + [(2)bni_22]x1[0] ≥ 0∧[(-1)bso_23] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_22 + (2)bni_22] + [(2)bni_22]x1[0] ≥ 0∧[(-1)bso_23] ≥ 0)







For Pair COND_285_0_TEST_LE(TRUE, x0, x1) → 285_0_TEST_LE(x0, +(x1, -1)) the following chains were created:
  • We consider the chain COND_285_0_TEST_LE(TRUE, x0[1], x1[1]) → 285_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (7)    (COND_285_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_285_0_TEST_LE(TRUE, x0[1], x1[1])≥285_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(285_0_TEST_LE(x0[1], +(x1[1], -1))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    ((UIncreasing(285_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_25] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    ((UIncreasing(285_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_25] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    ((UIncreasing(285_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_25] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    ((UIncreasing(285_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_25] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 285_0_TEST_LE(x0, x1) → COND_285_0_TEST_LE(>(x1, 0), x0, x1)
    • (x1[0] ≥ 0 ⇒ (UIncreasing(COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_22 + (2)bni_22] + [(2)bni_22]x1[0] ≥ 0∧[(-1)bso_23] ≥ 0)

  • COND_285_0_TEST_LE(TRUE, x0, x1) → 285_0_TEST_LE(x0, +(x1, -1))
    • ((UIncreasing(285_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_25] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(285_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(319_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(285_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_285_0_TEST_LE(x1, x2, x3)) = [2]x3   

The following pairs are in P>:

COND_285_0_TEST_LE(TRUE, x0[1], x1[1]) → 285_0_TEST_LE(x0[1], +(x1[1], -1))

The following pairs are in Pbound:

285_0_TEST_LE(x0[0], x1[0]) → COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

The following pairs are in P:

285_0_TEST_LE(x0[0], x1[0]) → COND_285_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

There are no usable rules.

(52) Complex Obligation (AND)

(53) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 285_0_TEST_LE(x0[0], x1[0]) → COND_285_0_TEST_LE(x1[0] > 0, x0[0], x1[0])


The set Q consists of the following terms:
285_0_test_LE(x0, 0)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(54) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(55) TRUE

(56) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(1): COND_285_0_TEST_LE(TRUE, x0[1], x1[1]) → 285_0_TEST_LE(x0[1], x1[1] + -1)


The set Q consists of the following terms:
285_0_test_LE(x0, 0)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(57) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(58) TRUE

(59) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 248_0_TEST_LE(x0[0], x1[0]) → COND_248_0_TEST_LE(x1[0] > 0, x0[0], x1[0])
(1): COND_248_0_TEST_LE(TRUE, x0[1], x1[1]) → 248_0_TEST_LE(x0[1], x1[1] + -1)

(0) -> (1), if ((x1[0] > 0* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (0), if ((x0[1]* x0[0])∧(x1[1] + -1* x1[0]))



The set Q consists of the following terms:
248_0_test_LE(x0, 0)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(60) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 248_0_TEST_LE(x0, x1) → COND_248_0_TEST_LE(>(x1, 0), x0, x1) the following chains were created:
  • We consider the chain 248_0_TEST_LE(x0[0], x1[0]) → COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_248_0_TEST_LE(TRUE, x0[1], x1[1]) → 248_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (1)    (>(x1[0], 0)=TRUEx0[0]=x0[1]x1[0]=x1[1]248_0_TEST_LE(x0[0], x1[0])≥NonInfC∧248_0_TEST_LE(x0[0], x1[0])≥COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x1[0], 0)=TRUE248_0_TEST_LE(x0[0], x1[0])≥NonInfC∧248_0_TEST_LE(x0[0], x1[0])≥COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_23] + [(2)bni_23]x1[0] ≥ 0∧[(-1)bso_24] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_23] + [(2)bni_23]x1[0] ≥ 0∧[(-1)bso_24] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_23] + [(2)bni_23]x1[0] ≥ 0∧[(-1)bso_24] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_23 + (2)bni_23] + [(2)bni_23]x1[0] ≥ 0∧[(-1)bso_24] ≥ 0)







For Pair COND_248_0_TEST_LE(TRUE, x0, x1) → 248_0_TEST_LE(x0, +(x1, -1)) the following chains were created:
  • We consider the chain COND_248_0_TEST_LE(TRUE, x0[1], x1[1]) → 248_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (7)    (COND_248_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_248_0_TEST_LE(TRUE, x0[1], x1[1])≥248_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(248_0_TEST_LE(x0[1], +(x1[1], -1))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    ((UIncreasing(248_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_26] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    ((UIncreasing(248_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_26] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    ((UIncreasing(248_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_26] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    ((UIncreasing(248_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_26] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 248_0_TEST_LE(x0, x1) → COND_248_0_TEST_LE(>(x1, 0), x0, x1)
    • (x1[0] ≥ 0 ⇒ (UIncreasing(COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_23 + (2)bni_23] + [(2)bni_23]x1[0] ≥ 0∧[(-1)bso_24] ≥ 0)

  • COND_248_0_TEST_LE(TRUE, x0, x1) → 248_0_TEST_LE(x0, +(x1, -1))
    • ((UIncreasing(248_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_26] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(248_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(285_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(319_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(248_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_248_0_TEST_LE(x1, x2, x3)) = [2]x3   

The following pairs are in P>:

COND_248_0_TEST_LE(TRUE, x0[1], x1[1]) → 248_0_TEST_LE(x0[1], +(x1[1], -1))

The following pairs are in Pbound:

248_0_TEST_LE(x0[0], x1[0]) → COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

The following pairs are in P:

248_0_TEST_LE(x0[0], x1[0]) → COND_248_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

There are no usable rules.

(61) Complex Obligation (AND)

(62) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 248_0_TEST_LE(x0[0], x1[0]) → COND_248_0_TEST_LE(x1[0] > 0, x0[0], x1[0])


The set Q consists of the following terms:
248_0_test_LE(x0, 0)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(63) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(64) TRUE

(65) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(1): COND_248_0_TEST_LE(TRUE, x0[1], x1[1]) → 248_0_TEST_LE(x0[1], x1[1] + -1)


The set Q consists of the following terms:
248_0_test_LE(x0, 0)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(66) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(67) TRUE

(68) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 221_0_TEST_LE(x0[0], x1[0]) → COND_221_0_TEST_LE(x1[0] > 0, x0[0], x1[0])
(1): COND_221_0_TEST_LE(TRUE, x0[1], x1[1]) → 221_0_TEST_LE(x0[1], x1[1] + -1)

(0) -> (1), if ((x1[0] > 0* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (0), if ((x0[1]* x0[0])∧(x1[1] + -1* x1[0]))



The set Q consists of the following terms:
221_0_test_LE(x0, 0)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(69) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 221_0_TEST_LE(x0, x1) → COND_221_0_TEST_LE(>(x1, 0), x0, x1) the following chains were created:
  • We consider the chain 221_0_TEST_LE(x0[0], x1[0]) → COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_221_0_TEST_LE(TRUE, x0[1], x1[1]) → 221_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (1)    (>(x1[0], 0)=TRUEx0[0]=x0[1]x1[0]=x1[1]221_0_TEST_LE(x0[0], x1[0])≥NonInfC∧221_0_TEST_LE(x0[0], x1[0])≥COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x1[0], 0)=TRUE221_0_TEST_LE(x0[0], x1[0])≥NonInfC∧221_0_TEST_LE(x0[0], x1[0])≥COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27 + (2)bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0)







For Pair COND_221_0_TEST_LE(TRUE, x0, x1) → 221_0_TEST_LE(x0, +(x1, -1)) the following chains were created:
  • We consider the chain COND_221_0_TEST_LE(TRUE, x0[1], x1[1]) → 221_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (7)    (COND_221_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_221_0_TEST_LE(TRUE, x0[1], x1[1])≥221_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(221_0_TEST_LE(x0[1], +(x1[1], -1))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    ((UIncreasing(221_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_30] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    ((UIncreasing(221_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_30] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    ((UIncreasing(221_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_30] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    ((UIncreasing(221_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_30] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 221_0_TEST_LE(x0, x1) → COND_221_0_TEST_LE(>(x1, 0), x0, x1)
    • (x1[0] ≥ 0 ⇒ (UIncreasing(COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27 + (2)bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0)

  • COND_221_0_TEST_LE(TRUE, x0, x1) → 221_0_TEST_LE(x0, +(x1, -1))
    • ((UIncreasing(221_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_30] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(221_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(248_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_248_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(285_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(319_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(221_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_221_0_TEST_LE(x1, x2, x3)) = [2]x3   

The following pairs are in P>:

COND_221_0_TEST_LE(TRUE, x0[1], x1[1]) → 221_0_TEST_LE(x0[1], +(x1[1], -1))

The following pairs are in Pbound:

221_0_TEST_LE(x0[0], x1[0]) → COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

The following pairs are in P:

221_0_TEST_LE(x0[0], x1[0]) → COND_221_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

There are no usable rules.

(70) Complex Obligation (AND)

(71) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 221_0_TEST_LE(x0[0], x1[0]) → COND_221_0_TEST_LE(x1[0] > 0, x0[0], x1[0])


The set Q consists of the following terms:
221_0_test_LE(x0, 0)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(72) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(73) TRUE

(74) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(1): COND_221_0_TEST_LE(TRUE, x0[1], x1[1]) → 221_0_TEST_LE(x0[1], x1[1] + -1)


The set Q consists of the following terms:
221_0_test_LE(x0, 0)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(75) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(76) TRUE

(77) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 193_0_TEST_LE(x0[0], x1[0]) → COND_193_0_TEST_LE(x1[0] > 0, x0[0], x1[0])
(1): COND_193_0_TEST_LE(TRUE, x0[1], x1[1]) → 193_0_TEST_LE(x0[1], x1[1] + -1)

(0) -> (1), if ((x1[0] > 0* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (0), if ((x0[1]* x0[0])∧(x1[1] + -1* x1[0]))



The set Q consists of the following terms:
193_0_test_LE(x0, 0)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(78) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 193_0_TEST_LE(x0, x1) → COND_193_0_TEST_LE(>(x1, 0), x0, x1) the following chains were created:
  • We consider the chain 193_0_TEST_LE(x0[0], x1[0]) → COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_193_0_TEST_LE(TRUE, x0[1], x1[1]) → 193_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (1)    (>(x1[0], 0)=TRUEx0[0]=x0[1]x1[0]=x1[1]193_0_TEST_LE(x0[0], x1[0])≥NonInfC∧193_0_TEST_LE(x0[0], x1[0])≥COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x1[0], 0)=TRUE193_0_TEST_LE(x0[0], x1[0])≥NonInfC∧193_0_TEST_LE(x0[0], x1[0])≥COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27 + (2)bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0)







For Pair COND_193_0_TEST_LE(TRUE, x0, x1) → 193_0_TEST_LE(x0, +(x1, -1)) the following chains were created:
  • We consider the chain COND_193_0_TEST_LE(TRUE, x0[1], x1[1]) → 193_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (7)    (COND_193_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_193_0_TEST_LE(TRUE, x0[1], x1[1])≥193_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(193_0_TEST_LE(x0[1], +(x1[1], -1))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    ((UIncreasing(193_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_30] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    ((UIncreasing(193_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_30] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    ((UIncreasing(193_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_30] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    ((UIncreasing(193_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_30] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 193_0_TEST_LE(x0, x1) → COND_193_0_TEST_LE(>(x1, 0), x0, x1)
    • (x1[0] ≥ 0 ⇒ (UIncreasing(COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_27 + (2)bni_27] + [(2)bni_27]x1[0] ≥ 0∧[(-1)bso_28] ≥ 0)

  • COND_193_0_TEST_LE(TRUE, x0, x1) → 193_0_TEST_LE(x0, +(x1, -1))
    • ((UIncreasing(193_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_30] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(193_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(221_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_221_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(248_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_248_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(285_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(319_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(193_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_193_0_TEST_LE(x1, x2, x3)) = [2]x3   

The following pairs are in P>:

COND_193_0_TEST_LE(TRUE, x0[1], x1[1]) → 193_0_TEST_LE(x0[1], +(x1[1], -1))

The following pairs are in Pbound:

193_0_TEST_LE(x0[0], x1[0]) → COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

The following pairs are in P:

193_0_TEST_LE(x0[0], x1[0]) → COND_193_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

There are no usable rules.

(79) Complex Obligation (AND)

(80) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 193_0_TEST_LE(x0[0], x1[0]) → COND_193_0_TEST_LE(x1[0] > 0, x0[0], x1[0])


The set Q consists of the following terms:
193_0_test_LE(x0, 0)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(81) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(82) TRUE

(83) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(1): COND_193_0_TEST_LE(TRUE, x0[1], x1[1]) → 193_0_TEST_LE(x0[1], x1[1] + -1)


The set Q consists of the following terms:
193_0_test_LE(x0, 0)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(84) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(85) TRUE

(86) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 162_0_TEST_LE(x0[0], x1[0]) → COND_162_0_TEST_LE(x1[0] > 0, x0[0], x1[0])
(1): COND_162_0_TEST_LE(TRUE, x0[1], x1[1]) → 162_0_TEST_LE(x0[1], x1[1] + -1)

(0) -> (1), if ((x1[0] > 0* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (0), if ((x0[1]* x0[0])∧(x1[1] + -1* x1[0]))



The set Q consists of the following terms:
162_0_test_LE(x0, 0)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(87) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 162_0_TEST_LE(x0, x1) → COND_162_0_TEST_LE(>(x1, 0), x0, x1) the following chains were created:
  • We consider the chain 162_0_TEST_LE(x0[0], x1[0]) → COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_162_0_TEST_LE(TRUE, x0[1], x1[1]) → 162_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (1)    (>(x1[0], 0)=TRUEx0[0]=x0[1]x1[0]=x1[1]162_0_TEST_LE(x0[0], x1[0])≥NonInfC∧162_0_TEST_LE(x0[0], x1[0])≥COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x1[0], 0)=TRUE162_0_TEST_LE(x0[0], x1[0])≥NonInfC∧162_0_TEST_LE(x0[0], x1[0])≥COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_31] + [(2)bni_31]x1[0] ≥ 0∧[(-1)bso_32] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_31] + [(2)bni_31]x1[0] ≥ 0∧[(-1)bso_32] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_31] + [(2)bni_31]x1[0] ≥ 0∧[(-1)bso_32] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_31 + (2)bni_31] + [(2)bni_31]x1[0] ≥ 0∧[(-1)bso_32] ≥ 0)







For Pair COND_162_0_TEST_LE(TRUE, x0, x1) → 162_0_TEST_LE(x0, +(x1, -1)) the following chains were created:
  • We consider the chain COND_162_0_TEST_LE(TRUE, x0[1], x1[1]) → 162_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (7)    (COND_162_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_162_0_TEST_LE(TRUE, x0[1], x1[1])≥162_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(162_0_TEST_LE(x0[1], +(x1[1], -1))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    ((UIncreasing(162_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_34] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    ((UIncreasing(162_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_34] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    ((UIncreasing(162_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_34] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    ((UIncreasing(162_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_34] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 162_0_TEST_LE(x0, x1) → COND_162_0_TEST_LE(>(x1, 0), x0, x1)
    • (x1[0] ≥ 0 ⇒ (UIncreasing(COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_31 + (2)bni_31] + [(2)bni_31]x1[0] ≥ 0∧[(-1)bso_32] ≥ 0)

  • COND_162_0_TEST_LE(TRUE, x0, x1) → 162_0_TEST_LE(x0, +(x1, -1))
    • ((UIncreasing(162_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_34] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(162_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(193_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_193_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(221_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_221_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(248_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_248_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(285_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(319_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(162_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_162_0_TEST_LE(x1, x2, x3)) = [2]x3   

The following pairs are in P>:

COND_162_0_TEST_LE(TRUE, x0[1], x1[1]) → 162_0_TEST_LE(x0[1], +(x1[1], -1))

The following pairs are in Pbound:

162_0_TEST_LE(x0[0], x1[0]) → COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

The following pairs are in P:

162_0_TEST_LE(x0[0], x1[0]) → COND_162_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

There are no usable rules.

(88) Complex Obligation (AND)

(89) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 162_0_TEST_LE(x0[0], x1[0]) → COND_162_0_TEST_LE(x1[0] > 0, x0[0], x1[0])


The set Q consists of the following terms:
162_0_test_LE(x0, 0)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(90) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(91) TRUE

(92) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(1): COND_162_0_TEST_LE(TRUE, x0[1], x1[1]) → 162_0_TEST_LE(x0[1], x1[1] + -1)


The set Q consists of the following terms:
162_0_test_LE(x0, 0)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(93) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(94) TRUE

(95) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
130_0_test_LE(x0, 0) → 162_0_test_LE(x0, x0)
162_0_test_LE(x0, x1) → Cond_162_0_test_LE(x1 > 0, x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1) → 162_0_test_LE(x0, x1 + -1)
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 130_0_TEST_LE(x0[0], x1[0]) → COND_130_0_TEST_LE(x1[0] > 0, x0[0], x1[0])
(1): COND_130_0_TEST_LE(TRUE, x0[1], x1[1]) → 130_0_TEST_LE(x0[1], x1[1] + -1)

(0) -> (1), if ((x1[0] > 0* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (0), if ((x0[1]* x0[0])∧(x1[1] + -1* x1[0]))



The set Q consists of the following terms:
130_0_test_LE(x0, 0)
162_0_test_LE(x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(96) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 130_0_TEST_LE(x0, x1) → COND_130_0_TEST_LE(>(x1, 0), x0, x1) the following chains were created:
  • We consider the chain 130_0_TEST_LE(x0[0], x1[0]) → COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_130_0_TEST_LE(TRUE, x0[1], x1[1]) → 130_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (1)    (>(x1[0], 0)=TRUEx0[0]=x0[1]x1[0]=x1[1]130_0_TEST_LE(x0[0], x1[0])≥NonInfC∧130_0_TEST_LE(x0[0], x1[0])≥COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x1[0], 0)=TRUE130_0_TEST_LE(x0[0], x1[0])≥NonInfC∧130_0_TEST_LE(x0[0], x1[0])≥COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_32] + [(2)bni_32]x1[0] ≥ 0∧[(-1)bso_33] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_32] + [(2)bni_32]x1[0] ≥ 0∧[(-1)bso_33] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_32] + [(2)bni_32]x1[0] ≥ 0∧[(-1)bso_33] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_32 + (2)bni_32] + [(2)bni_32]x1[0] ≥ 0∧[(-1)bso_33] ≥ 0)







For Pair COND_130_0_TEST_LE(TRUE, x0, x1) → 130_0_TEST_LE(x0, +(x1, -1)) the following chains were created:
  • We consider the chain COND_130_0_TEST_LE(TRUE, x0[1], x1[1]) → 130_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (7)    (COND_130_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_130_0_TEST_LE(TRUE, x0[1], x1[1])≥130_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(130_0_TEST_LE(x0[1], +(x1[1], -1))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    ((UIncreasing(130_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_35] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    ((UIncreasing(130_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_35] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    ((UIncreasing(130_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_35] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    ((UIncreasing(130_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_35] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 130_0_TEST_LE(x0, x1) → COND_130_0_TEST_LE(>(x1, 0), x0, x1)
    • (x1[0] ≥ 0 ⇒ (UIncreasing(COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_32 + (2)bni_32] + [(2)bni_32]x1[0] ≥ 0∧[(-1)bso_33] ≥ 0)

  • COND_130_0_TEST_LE(TRUE, x0, x1) → 130_0_TEST_LE(x0, +(x1, -1))
    • ((UIncreasing(130_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_35] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(130_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(162_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_162_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(193_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_193_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(221_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_221_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(248_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_248_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(285_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(319_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(130_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_130_0_TEST_LE(x1, x2, x3)) = [2]x3   

The following pairs are in P>:

COND_130_0_TEST_LE(TRUE, x0[1], x1[1]) → 130_0_TEST_LE(x0[1], +(x1[1], -1))

The following pairs are in Pbound:

130_0_TEST_LE(x0[0], x1[0]) → COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

The following pairs are in P:

130_0_TEST_LE(x0[0], x1[0]) → COND_130_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

There are no usable rules.

(97) Complex Obligation (AND)

(98) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
130_0_test_LE(x0, 0) → 162_0_test_LE(x0, x0)
162_0_test_LE(x0, x1) → Cond_162_0_test_LE(x1 > 0, x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1) → 162_0_test_LE(x0, x1 + -1)
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 130_0_TEST_LE(x0[0], x1[0]) → COND_130_0_TEST_LE(x1[0] > 0, x0[0], x1[0])


The set Q consists of the following terms:
130_0_test_LE(x0, 0)
162_0_test_LE(x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(99) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(100) TRUE

(101) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
130_0_test_LE(x0, 0) → 162_0_test_LE(x0, x0)
162_0_test_LE(x0, x1) → Cond_162_0_test_LE(x1 > 0, x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1) → 162_0_test_LE(x0, x1 + -1)
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(1): COND_130_0_TEST_LE(TRUE, x0[1], x1[1]) → 130_0_TEST_LE(x0[1], x1[1] + -1)


The set Q consists of the following terms:
130_0_test_LE(x0, 0)
162_0_test_LE(x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(102) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(103) TRUE

(104) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
97_0_test_LE(x0, 0) → 130_0_test_LE(x0, x0)
130_0_test_LE(x0, x1) → Cond_130_0_test_LE(x1 > 0, x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1) → 130_0_test_LE(x0, x1 + -1)
130_0_test_LE(x0, 0) → 162_0_test_LE(x0, x0)
162_0_test_LE(x0, x1) → Cond_162_0_test_LE(x1 > 0, x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1) → 162_0_test_LE(x0, x1 + -1)
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 97_0_TEST_LE(x0[0], x1[0]) → COND_97_0_TEST_LE(x1[0] > 0, x0[0], x1[0])
(1): COND_97_0_TEST_LE(TRUE, x0[1], x1[1]) → 97_0_TEST_LE(x0[1], x1[1] + -1)

(0) -> (1), if ((x1[0] > 0* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (0), if ((x0[1]* x0[0])∧(x1[1] + -1* x1[0]))



The set Q consists of the following terms:
97_0_test_LE(x0, 0)
130_0_test_LE(x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1)
162_0_test_LE(x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(105) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 97_0_TEST_LE(x0, x1) → COND_97_0_TEST_LE(>(x1, 0), x0, x1) the following chains were created:
  • We consider the chain 97_0_TEST_LE(x0[0], x1[0]) → COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0]), COND_97_0_TEST_LE(TRUE, x0[1], x1[1]) → 97_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (1)    (>(x1[0], 0)=TRUEx0[0]=x0[1]x1[0]=x1[1]97_0_TEST_LE(x0[0], x1[0])≥NonInfC∧97_0_TEST_LE(x0[0], x1[0])≥COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(x1[0], 0)=TRUE97_0_TEST_LE(x0[0], x1[0])≥NonInfC∧97_0_TEST_LE(x0[0], x1[0])≥COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])∧(UIncreasing(COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_34] + [(2)bni_34]x1[0] ≥ 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_34] + [(2)bni_34]x1[0] ≥ 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x1[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_34] + [(2)bni_34]x1[0] ≥ 0∧[(-1)bso_35] ≥ 0)



    We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (6)    (x1[0] ≥ 0 ⇒ (UIncreasing(COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_34 + (2)bni_34] + [(2)bni_34]x1[0] ≥ 0∧[(-1)bso_35] ≥ 0)







For Pair COND_97_0_TEST_LE(TRUE, x0, x1) → 97_0_TEST_LE(x0, +(x1, -1)) the following chains were created:
  • We consider the chain COND_97_0_TEST_LE(TRUE, x0[1], x1[1]) → 97_0_TEST_LE(x0[1], +(x1[1], -1)) which results in the following constraint:

    (7)    (COND_97_0_TEST_LE(TRUE, x0[1], x1[1])≥NonInfC∧COND_97_0_TEST_LE(TRUE, x0[1], x1[1])≥97_0_TEST_LE(x0[1], +(x1[1], -1))∧(UIncreasing(97_0_TEST_LE(x0[1], +(x1[1], -1))), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    ((UIncreasing(97_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_37] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    ((UIncreasing(97_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_37] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    ((UIncreasing(97_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧[2 + (-1)bso_37] ≥ 0)



    We simplified constraint (10) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (11)    ((UIncreasing(97_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_37] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 97_0_TEST_LE(x0, x1) → COND_97_0_TEST_LE(>(x1, 0), x0, x1)
    • (x1[0] ≥ 0 ⇒ (UIncreasing(COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_34 + (2)bni_34] + [(2)bni_34]x1[0] ≥ 0∧[(-1)bso_35] ≥ 0)

  • COND_97_0_TEST_LE(TRUE, x0, x1) → 97_0_TEST_LE(x0, +(x1, -1))
    • ((UIncreasing(97_0_TEST_LE(x0[1], +(x1[1], -1))), ≥)∧0 = 0∧[2 + (-1)bso_37] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(97_0_test_LE(x1, x2)) = [-1]   
POL(0) = 0   
POL(130_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_130_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(162_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_162_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(193_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_193_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(221_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_221_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(248_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_248_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(285_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(319_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(97_0_TEST_LE(x1, x2)) = [2]x2   
POL(COND_97_0_TEST_LE(x1, x2, x3)) = [2]x3   

The following pairs are in P>:

COND_97_0_TEST_LE(TRUE, x0[1], x1[1]) → 97_0_TEST_LE(x0[1], +(x1[1], -1))

The following pairs are in Pbound:

97_0_TEST_LE(x0[0], x1[0]) → COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

The following pairs are in P:

97_0_TEST_LE(x0[0], x1[0]) → COND_97_0_TEST_LE(>(x1[0], 0), x0[0], x1[0])

There are no usable rules.

(106) Complex Obligation (AND)

(107) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
97_0_test_LE(x0, 0) → 130_0_test_LE(x0, x0)
130_0_test_LE(x0, x1) → Cond_130_0_test_LE(x1 > 0, x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1) → 130_0_test_LE(x0, x1 + -1)
130_0_test_LE(x0, 0) → 162_0_test_LE(x0, x0)
162_0_test_LE(x0, x1) → Cond_162_0_test_LE(x1 > 0, x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1) → 162_0_test_LE(x0, x1 + -1)
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 97_0_TEST_LE(x0[0], x1[0]) → COND_97_0_TEST_LE(x1[0] > 0, x0[0], x1[0])


The set Q consists of the following terms:
97_0_test_LE(x0, 0)
130_0_test_LE(x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1)
162_0_test_LE(x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(108) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(109) TRUE

(110) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
97_0_test_LE(x0, 0) → 130_0_test_LE(x0, x0)
130_0_test_LE(x0, x1) → Cond_130_0_test_LE(x1 > 0, x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1) → 130_0_test_LE(x0, x1 + -1)
130_0_test_LE(x0, 0) → 162_0_test_LE(x0, x0)
162_0_test_LE(x0, x1) → Cond_162_0_test_LE(x1 > 0, x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1) → 162_0_test_LE(x0, x1 + -1)
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(1): COND_97_0_TEST_LE(TRUE, x0[1], x1[1]) → 97_0_TEST_LE(x0[1], x1[1] + -1)


The set Q consists of the following terms:
97_0_test_LE(x0, 0)
130_0_test_LE(x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1)
162_0_test_LE(x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(111) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(112) TRUE

(113) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
56_0_test_Load(x0) → 97_0_test_LE(x0, x0)
97_0_test_LE(x0, x1) → Cond_97_0_test_LE(x1 > 0, x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1) → 97_0_test_LE(x0, x1 + -1)
97_0_test_LE(x0, 0) → 130_0_test_LE(x0, x0)
130_0_test_LE(x0, x1) → Cond_130_0_test_LE(x1 > 0, x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1) → 130_0_test_LE(x0, x1 + -1)
130_0_test_LE(x0, 0) → 162_0_test_LE(x0, x0)
162_0_test_LE(x0, x1) → Cond_162_0_test_LE(x1 > 0, x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1) → 162_0_test_LE(x0, x1 + -1)
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(x1[0] < 100, x0[0], x1[0])
(1): COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])
(2): 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(x1[2] > 0, 471_0_test_Return, x0[2], x1[2])
(3): COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], x1[3] + 1)
(4): 48_0_MAIN_GE(x0[4], x1[4]) → COND_48_0_MAIN_GE1(x1[4] >= 100 && x0[4] > 0 && 1 > 0 && 0 < x0[4] - 1, x0[4], x1[4])
(5): COND_48_0_MAIN_GE1(TRUE, x0[5], x1[5]) → 48_0_MAIN_GE(x0[5] - 1, x0[5] - 1)

(0) -> (1), if ((x1[0] < 100* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1]* x0[2])∧(x1[1]* x1[2]))


(2) -> (3), if ((x1[2] > 0* TRUE)∧(x0[2]* x0[3])∧(x1[2]* x1[3]))


(3) -> (0), if ((x0[3]* x0[0])∧(x1[3] + 1* x1[0]))


(3) -> (4), if ((x0[3]* x0[4])∧(x1[3] + 1* x1[4]))


(4) -> (5), if ((x1[4] >= 100 && x0[4] > 0 && 1 > 0 && 0 < x0[4] - 1* TRUE)∧(x0[4]* x0[5])∧(x1[4]* x1[5]))


(5) -> (0), if ((x0[5] - 1* x0[0])∧(x0[5] - 1* x1[0]))


(5) -> (4), if ((x0[5] - 1* x0[4])∧(x0[5] - 1* x1[4]))



The set Q consists of the following terms:
56_0_test_Load(x0)
97_0_test_LE(x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1)
130_0_test_LE(x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1)
162_0_test_LE(x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(114) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 48_0_MAIN_GE(x0, x1) → COND_48_0_MAIN_GE(<(x1, 100), x0, x1) the following chains were created:
  • We consider the chain 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0]), COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1]) which results in the following constraint:

    (1)    (<(x1[0], 100)=TRUEx0[0]=x0[1]x1[0]=x1[1]48_0_MAIN_GE(x0[0], x1[0])≥NonInfC∧48_0_MAIN_GE(x0[0], x1[0])≥COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])∧(UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (<(x1[0], 100)=TRUE48_0_MAIN_GE(x0[0], x1[0])≥NonInfC∧48_0_MAIN_GE(x0[0], x1[0])≥COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])∧(UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_54 + (-1)Bound*bni_54] + [bni_54]x0[0] ≥ 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (7)    ([99] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0)


    (8)    ([99] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0)







For Pair COND_48_0_MAIN_GE(TRUE, x0, x1) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1), x0, x1) the following chains were created:
  • We consider the chain COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1]) which results in the following constraint:

    (9)    (COND_48_0_MAIN_GE(TRUE, x0[1], x1[1])≥NonInfC∧COND_48_0_MAIN_GE(TRUE, x0[1], x1[1])≥56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])∧(UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_57] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_57] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_57] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_57] ≥ 0)







For Pair 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0, x1) → COND_56_1_MAIN_INVOKEMETHOD(>(x1, 0), 471_0_test_Return, x0, x1) the following chains were created:
  • We consider the chain 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2]), COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1)) which results in the following constraint:

    (14)    (>(x1[2], 0)=TRUEx0[2]=x0[3]x1[2]=x1[3]56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥NonInfC∧56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])∧(UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥))



    We simplified constraint (14) using rule (IV) which results in the following new constraint:

    (15)    (>(x1[2], 0)=TRUE56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥NonInfC∧56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])∧(UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥))



    We simplified constraint (15) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (16)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [bni_58]x0[2] ≥ 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (16) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (17)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [bni_58]x0[2] ≥ 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (17) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (18)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [bni_58]x0[2] ≥ 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (18) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (19)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[bni_58] = 0∧[(-1)bni_58 + (-1)Bound*bni_58] ≥ 0∧0 = 0∧[(-1)bso_59] ≥ 0)



    We simplified constraint (19) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (20)    (x1[2] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[bni_58] = 0∧[(-1)bni_58 + (-1)Bound*bni_58] ≥ 0∧0 = 0∧[(-1)bso_59] ≥ 0)







For Pair COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0, x1) → 48_0_MAIN_GE(x0, +(x1, 1)) the following chains were created:
  • We consider the chain COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1)) which results in the following constraint:

    (21)    (COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3])≥NonInfC∧COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3])≥48_0_MAIN_GE(x0[3], +(x1[3], 1))∧(UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥))



    We simplified constraint (21) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (22)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[(-1)bso_61] ≥ 0)



    We simplified constraint (22) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (23)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[(-1)bso_61] ≥ 0)



    We simplified constraint (23) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (24)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[(-1)bso_61] ≥ 0)



    We simplified constraint (24) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (25)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bso_61] ≥ 0)







For Pair 48_0_MAIN_GE(x0, x1) → COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1, 100), >(x0, 0)), >(1, 0)), <(0, -(x0, 1))), x0, x1) the following chains were created:
  • We consider the chain 48_0_MAIN_GE(x0[4], x1[4]) → COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4]), COND_48_0_MAIN_GE1(TRUE, x0[5], x1[5]) → 48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1)) which results in the following constraint:

    (26)    (&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1)))=TRUEx0[4]=x0[5]x1[4]=x1[5]48_0_MAIN_GE(x0[4], x1[4])≥NonInfC∧48_0_MAIN_GE(x0[4], x1[4])≥COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])∧(UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥))



    We simplified constraint (26) using rules (IV), (IDP_CONSTANT_FOLD), (DELETE_TRIVIAL_REDUCESTO), (IDP_BOOLEAN) which results in the following new constraint:

    (27)    (<(0, -(x0[4], 1))=TRUE>=(x1[4], 100)=TRUE>(x0[4], 0)=TRUE48_0_MAIN_GE(x0[4], x1[4])≥NonInfC∧48_0_MAIN_GE(x0[4], x1[4])≥COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])∧(UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥))



    We simplified constraint (27) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (28)    (x0[4] + [-2] ≥ 0∧x1[4] + [-100] ≥ 0∧x0[4] + [-1] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥)∧[(-1)bni_62 + (-1)Bound*bni_62] + [bni_62]x0[4] ≥ 0∧[(-1)bso_63] ≥ 0)



    We simplified constraint (28) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (29)    (x0[4] + [-2] ≥ 0∧x1[4] + [-100] ≥ 0∧x0[4] + [-1] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥)∧[(-1)bni_62 + (-1)Bound*bni_62] + [bni_62]x0[4] ≥ 0∧[(-1)bso_63] ≥ 0)



    We simplified constraint (29) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (30)    (x0[4] + [-2] ≥ 0∧x1[4] + [-100] ≥ 0∧x0[4] + [-1] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥)∧[(-1)bni_62 + (-1)Bound*bni_62] + [bni_62]x0[4] ≥ 0∧[(-1)bso_63] ≥ 0)



    We simplified constraint (30) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (31)    (x0[4] ≥ 0∧x1[4] + [-100] ≥ 0∧[1] + x0[4] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥)∧[bni_62 + (-1)Bound*bni_62] + [bni_62]x0[4] ≥ 0∧[(-1)bso_63] ≥ 0)



    We simplified constraint (31) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (32)    (x0[4] ≥ 0∧x1[4] ≥ 0∧[1] + x0[4] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥)∧[bni_62 + (-1)Bound*bni_62] + [bni_62]x0[4] ≥ 0∧[(-1)bso_63] ≥ 0)







For Pair COND_48_0_MAIN_GE1(TRUE, x0, x1) → 48_0_MAIN_GE(-(x0, 1), -(x0, 1)) the following chains were created:
  • We consider the chain COND_48_0_MAIN_GE1(TRUE, x0[5], x1[5]) → 48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1)) which results in the following constraint:

    (33)    (COND_48_0_MAIN_GE1(TRUE, x0[5], x1[5])≥NonInfC∧COND_48_0_MAIN_GE1(TRUE, x0[5], x1[5])≥48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))∧(UIncreasing(48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))), ≥))



    We simplified constraint (33) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (34)    ((UIncreasing(48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))), ≥)∧[1 + (-1)bso_65] ≥ 0)



    We simplified constraint (34) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (35)    ((UIncreasing(48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))), ≥)∧[1 + (-1)bso_65] ≥ 0)



    We simplified constraint (35) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (36)    ((UIncreasing(48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))), ≥)∧[1 + (-1)bso_65] ≥ 0)



    We simplified constraint (36) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (37)    ((UIncreasing(48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))), ≥)∧0 = 0∧0 = 0∧[1 + (-1)bso_65] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 48_0_MAIN_GE(x0, x1) → COND_48_0_MAIN_GE(<(x1, 100), x0, x1)
    • ([99] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0)
    • ([99] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[bni_54] = 0∧[(-1)bni_54 + (-1)Bound*bni_54] ≥ 0∧0 = 0∧[(-1)bso_55] ≥ 0)

  • COND_48_0_MAIN_GE(TRUE, x0, x1) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1), x0, x1)
    • ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_57] ≥ 0)

  • 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0, x1) → COND_56_1_MAIN_INVOKEMETHOD(>(x1, 0), 471_0_test_Return, x0, x1)
    • (x1[2] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[bni_58] = 0∧[(-1)bni_58 + (-1)Bound*bni_58] ≥ 0∧0 = 0∧[(-1)bso_59] ≥ 0)

  • COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0, x1) → 48_0_MAIN_GE(x0, +(x1, 1))
    • ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧0 = 0∧0 = 0∧[(-1)bso_61] ≥ 0)

  • 48_0_MAIN_GE(x0, x1) → COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1, 100), >(x0, 0)), >(1, 0)), <(0, -(x0, 1))), x0, x1)
    • (x0[4] ≥ 0∧x1[4] ≥ 0∧[1] + x0[4] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])), ≥)∧[bni_62 + (-1)Bound*bni_62] + [bni_62]x0[4] ≥ 0∧[(-1)bso_63] ≥ 0)

  • COND_48_0_MAIN_GE1(TRUE, x0, x1) → 48_0_MAIN_GE(-(x0, 1), -(x0, 1))
    • ((UIncreasing(48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))), ≥)∧0 = 0∧0 = 0∧[1 + (-1)bso_65] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(56_0_test_Load(x1)) = x1   
POL(97_0_test_LE(x1, x2)) = [-1] + [2]x2 + [-1]x1   
POL(Cond_97_0_test_LE(x1, x2, x3)) = [2] + [2]x3 + x2   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(130_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_130_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3 + x2   
POL(162_0_test_LE(x1, x2)) = [1] + [-1]x2 + x1   
POL(Cond_162_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3 + x2   
POL(193_0_test_LE(x1, x2)) = [-1]x2 + [2]x1   
POL(Cond_193_0_test_LE(x1, x2, x3)) = [2] + [-1]x3 + x2   
POL(221_0_test_LE(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(Cond_221_0_test_LE(x1, x2, x3)) = [1] + [-1]x3 + x2   
POL(248_0_test_LE(x1, x2)) = [1] + [-1]x2 + [-1]x1   
POL(Cond_248_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3 + x2   
POL(285_0_test_LE(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3 + x2   
POL(319_0_test_LE(x1, x2)) = [2] + [-1]x2 + [2]x1   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [2] + [-1]x3 + x2   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x2 + x1   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [2] + [-1]x3 + x2   
POL(386_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x3 + x2   
POL(426_0_test_LE(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1]x3 + x2   
POL(465_0_test_LE(x1)) = [-1] + [-1]x1   
POL(471_0_test_Return) = 0   
POL(Cond_465_0_test_LE(x1, x2)) = [2] + [2]x2   
POL(48_0_MAIN_GE(x1, x2)) = [-1] + x1   
POL(COND_48_0_MAIN_GE(x1, x2, x3)) = [-1] + x2   
POL(<(x1, x2)) = [-1]   
POL(100) = [100]   
POL(56_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + x2   
POL(COND_56_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + x3   
POL(1) = [1]   
POL(COND_48_0_MAIN_GE1(x1, x2, x3)) = [-1] + x2   
POL(&&(x1, x2)) = [-1]   
POL(>=(x1, x2)) = [-1]   
POL(-(x1, x2)) = x1 + [-1]x2   

The following pairs are in P>:

COND_48_0_MAIN_GE1(TRUE, x0[5], x1[5]) → 48_0_MAIN_GE(-(x0[5], 1), -(x0[5], 1))

The following pairs are in Pbound:

48_0_MAIN_GE(x0[4], x1[4]) → COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])

The following pairs are in P:

48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])
COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])
56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])
COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1))
48_0_MAIN_GE(x0[4], x1[4]) → COND_48_0_MAIN_GE1(&&(&&(&&(>=(x1[4], 100), >(x0[4], 0)), >(1, 0)), <(0, -(x0[4], 1))), x0[4], x1[4])

At least the following rules have been oriented under context sensitive arithmetic replacement:

56_0_test_Load(x0)197_0_test_LE(x0, x0)1
130_0_test_LE(x0, x0)197_0_test_LE(x0, 0)1
162_0_test_LE(x0, x0)1130_0_test_LE(x0, 0)1
162_0_test_LE(x0, x1)1Cond_162_0_test_LE(>(x1, 0), x0, x1)1
Cond_354_0_test_LE(>(x1, 0), x0, x1)1354_0_test_LE(x0, x1)1
471_0_test_Return1465_0_test_LE(0)1

(115) Complex Obligation (AND)

(116) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
56_0_test_Load(x0) → 97_0_test_LE(x0, x0)
97_0_test_LE(x0, x1) → Cond_97_0_test_LE(x1 > 0, x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1) → 97_0_test_LE(x0, x1 + -1)
97_0_test_LE(x0, 0) → 130_0_test_LE(x0, x0)
130_0_test_LE(x0, x1) → Cond_130_0_test_LE(x1 > 0, x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1) → 130_0_test_LE(x0, x1 + -1)
130_0_test_LE(x0, 0) → 162_0_test_LE(x0, x0)
162_0_test_LE(x0, x1) → Cond_162_0_test_LE(x1 > 0, x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1) → 162_0_test_LE(x0, x1 + -1)
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(x1[0] < 100, x0[0], x1[0])
(1): COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])
(2): 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(x1[2] > 0, 471_0_test_Return, x0[2], x1[2])
(3): COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], x1[3] + 1)
(4): 48_0_MAIN_GE(x0[4], x1[4]) → COND_48_0_MAIN_GE1(x1[4] >= 100 && x0[4] > 0 && 1 > 0 && 0 < x0[4] - 1, x0[4], x1[4])

(3) -> (0), if ((x0[3]* x0[0])∧(x1[3] + 1* x1[0]))


(0) -> (1), if ((x1[0] < 100* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1]* x0[2])∧(x1[1]* x1[2]))


(2) -> (3), if ((x1[2] > 0* TRUE)∧(x0[2]* x0[3])∧(x1[2]* x1[3]))


(3) -> (4), if ((x0[3]* x0[4])∧(x1[3] + 1* x1[4]))



The set Q consists of the following terms:
56_0_test_Load(x0)
97_0_test_LE(x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1)
130_0_test_LE(x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1)
162_0_test_LE(x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(117) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(118) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
56_0_test_Load(x0) → 97_0_test_LE(x0, x0)
97_0_test_LE(x0, x1) → Cond_97_0_test_LE(x1 > 0, x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1) → 97_0_test_LE(x0, x1 + -1)
97_0_test_LE(x0, 0) → 130_0_test_LE(x0, x0)
130_0_test_LE(x0, x1) → Cond_130_0_test_LE(x1 > 0, x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1) → 130_0_test_LE(x0, x1 + -1)
130_0_test_LE(x0, 0) → 162_0_test_LE(x0, x0)
162_0_test_LE(x0, x1) → Cond_162_0_test_LE(x1 > 0, x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1) → 162_0_test_LE(x0, x1 + -1)
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(3): COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], x1[3] + 1)
(2): 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(x1[2] > 0, 471_0_test_Return, x0[2], x1[2])
(1): COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])
(0): 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(x1[0] < 100, x0[0], x1[0])

(3) -> (0), if ((x0[3]* x0[0])∧(x1[3] + 1* x1[0]))


(0) -> (1), if ((x1[0] < 100* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1]* x0[2])∧(x1[1]* x1[2]))


(2) -> (3), if ((x1[2] > 0* TRUE)∧(x0[2]* x0[3])∧(x1[2]* x1[3]))



The set Q consists of the following terms:
56_0_test_Load(x0)
97_0_test_LE(x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1)
130_0_test_LE(x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1)
162_0_test_LE(x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(119) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1)) the following chains were created:
  • We consider the chain COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1)) which results in the following constraint:

    (1)    (COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3])≥NonInfC∧COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3])≥48_0_MAIN_GE(x0[3], +(x1[3], 1))∧(UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥))



    We simplified constraint (1) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (2)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[1 + (-1)bso_36] ≥ 0)



    We simplified constraint (2) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (3)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[1 + (-1)bso_36] ≥ 0)



    We simplified constraint (3) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (4)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[1 + (-1)bso_36] ≥ 0)



    We simplified constraint (4) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (5)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧0 = 0∧[1 + (-1)bso_36] ≥ 0)







For Pair 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2]) the following chains were created:
  • We consider the chain 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2]), COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1)) which results in the following constraint:

    (6)    (>(x1[2], 0)=TRUEx0[2]=x0[3]x1[2]=x1[3]56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥NonInfC∧56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])∧(UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥))



    We simplified constraint (6) using rule (IV) which results in the following new constraint:

    (7)    (>(x1[2], 0)=TRUE56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥NonInfC∧56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])∧(UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [(-1)bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [(-1)bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_37 + (-1)Bound*bni_37] + [(-1)bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0)



    We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (11)    (x1[2] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-2)bni_37 + (-1)Bound*bni_37] + [(-1)bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0)







For Pair COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1]) the following chains were created:
  • We consider the chain COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1]) which results in the following constraint:

    (12)    (COND_48_0_MAIN_GE(TRUE, x0[1], x1[1])≥NonInfC∧COND_48_0_MAIN_GE(TRUE, x0[1], x1[1])≥56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])∧(UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥))



    We simplified constraint (12) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (13)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_40] ≥ 0)



    We simplified constraint (13) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (14)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_40] ≥ 0)



    We simplified constraint (14) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (15)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_40] ≥ 0)



    We simplified constraint (15) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (16)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧0 = 0∧[(-1)bso_40] ≥ 0)







For Pair 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0]) the following chains were created:
  • We consider the chain 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0]), COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1]) which results in the following constraint:

    (17)    (<(x1[0], 100)=TRUEx0[0]=x0[1]x1[0]=x1[1]48_0_MAIN_GE(x0[0], x1[0])≥NonInfC∧48_0_MAIN_GE(x0[0], x1[0])≥COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])∧(UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥))



    We simplified constraint (17) using rule (IV) which results in the following new constraint:

    (18)    (<(x1[0], 100)=TRUE48_0_MAIN_GE(x0[0], x1[0])≥NonInfC∧48_0_MAIN_GE(x0[0], x1[0])≥COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])∧(UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥))



    We simplified constraint (18) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (19)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(-1)bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (19) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (20)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(-1)bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (20) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (21)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(-1)bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0)



    We simplified constraint (21) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (22)    ([99] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(-1)bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0)


    (23)    ([99] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1))
    • ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧0 = 0∧[1 + (-1)bso_36] ≥ 0)

  • 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])
    • (x1[2] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-2)bni_37 + (-1)Bound*bni_37] + [(-1)bni_37]x1[2] ≥ 0∧[(-1)bso_38] ≥ 0)

  • COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])
    • ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧0 = 0∧[(-1)bso_40] ≥ 0)

  • 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])
    • ([99] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [(-1)bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0)
    • ([99] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)bni_41 + (-1)Bound*bni_41] + [bni_41]x1[0] ≥ 0∧[(-1)bso_42] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(56_0_test_Load(x1)) = [-1] + [-1]x1   
POL(97_0_test_LE(x1, x2)) = [-1] + [-1]x2   
POL(Cond_97_0_test_LE(x1, x2, x3)) = [-1]x3 + [-1]x2   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(130_0_test_LE(x1, x2)) = [-1]x1   
POL(Cond_130_0_test_LE(x1, x2, x3)) = [-1] + [-1]x2   
POL(162_0_test_LE(x1, x2)) = [-1] + [-1]x1   
POL(Cond_162_0_test_LE(x1, x2, x3)) = [2] + [-1]x2   
POL(193_0_test_LE(x1, x2)) = [-1] + x1   
POL(Cond_193_0_test_LE(x1, x2, x3)) = [-1] + [-1]x2   
POL(221_0_test_LE(x1, x2)) = [1] + [2]x2 + x1   
POL(Cond_221_0_test_LE(x1, x2, x3)) = [-1] + [2]x3 + [-1]x2   
POL(248_0_test_LE(x1, x2)) = [-1] + [2]x1   
POL(Cond_248_0_test_LE(x1, x2, x3)) = [-1] + [-1]x2   
POL(285_0_test_LE(x1, x2)) = [1] + [-1]x1   
POL(Cond_285_0_test_LE(x1, x2, x3)) = [-1] + [-1]x2   
POL(319_0_test_LE(x1, x2)) = 0   
POL(Cond_319_0_test_LE(x1, x2, x3)) = [1] + [-1]x2   
POL(354_0_test_LE(x1, x2)) = [-1] + [-1]x1   
POL(Cond_354_0_test_LE(x1, x2, x3)) = [-1]x2   
POL(386_0_test_LE(x1, x2)) = [2] + x1   
POL(Cond_386_0_test_LE(x1, x2, x3)) = [-1] + [-1]x2   
POL(426_0_test_LE(x1, x2)) = [1] + [-1]x1   
POL(Cond_426_0_test_LE(x1, x2, x3)) = [-1] + [-1]x2   
POL(465_0_test_LE(x1)) = 0   
POL(471_0_test_Return) = [-1]   
POL(Cond_465_0_test_LE(x1, x2)) = [-1]x2   
POL(COND_56_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x4   
POL(48_0_MAIN_GE(x1, x2)) = [-1] + [-1]x2   
POL(1) = [1]   
POL(56_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [-1]x3   
POL(COND_48_0_MAIN_GE(x1, x2, x3)) = [-1] + [-1]x3   
POL(<(x1, x2)) = [-1]   
POL(100) = [100]   

The following pairs are in P>:

COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1))

The following pairs are in Pbound:

48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])

The following pairs are in P:

56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])
COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])
48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])

At least the following rules have been oriented under context sensitive arithmetic replacement:

97_0_test_LE(x0, x0)156_0_test_Load(x0)1
130_0_test_LE(x0, 0)1162_0_test_LE(x0, x0)1
130_0_test_LE(x0, +(x1, -1))1Cond_130_0_test_LE(TRUE, x0, x1)1
285_0_test_LE(x0, x1)1Cond_285_0_test_LE(>(x1, 0), x0, x1)1
Cond_354_0_test_LE(>(x1, 0), x0, x1)1354_0_test_LE(x0, x1)1
426_0_test_LE(x0, +(x1, -1))1Cond_426_0_test_LE(TRUE, x0, x1)1
465_0_test_LE(0)1471_0_test_Return1

(120) Complex Obligation (AND)

(121) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
56_0_test_Load(x0) → 97_0_test_LE(x0, x0)
97_0_test_LE(x0, x1) → Cond_97_0_test_LE(x1 > 0, x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1) → 97_0_test_LE(x0, x1 + -1)
97_0_test_LE(x0, 0) → 130_0_test_LE(x0, x0)
130_0_test_LE(x0, x1) → Cond_130_0_test_LE(x1 > 0, x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1) → 130_0_test_LE(x0, x1 + -1)
130_0_test_LE(x0, 0) → 162_0_test_LE(x0, x0)
162_0_test_LE(x0, x1) → Cond_162_0_test_LE(x1 > 0, x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1) → 162_0_test_LE(x0, x1 + -1)
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(2): 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(x1[2] > 0, 471_0_test_Return, x0[2], x1[2])
(1): COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])
(0): 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(x1[0] < 100, x0[0], x1[0])

(0) -> (1), if ((x1[0] < 100* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1]* x0[2])∧(x1[1]* x1[2]))



The set Q consists of the following terms:
56_0_test_Load(x0)
97_0_test_LE(x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1)
130_0_test_LE(x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1)
162_0_test_LE(x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(122) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 3 less nodes.

(123) TRUE

(124) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
56_0_test_Load(x0) → 97_0_test_LE(x0, x0)
97_0_test_LE(x0, x1) → Cond_97_0_test_LE(x1 > 0, x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1) → 97_0_test_LE(x0, x1 + -1)
97_0_test_LE(x0, 0) → 130_0_test_LE(x0, x0)
130_0_test_LE(x0, x1) → Cond_130_0_test_LE(x1 > 0, x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1) → 130_0_test_LE(x0, x1 + -1)
130_0_test_LE(x0, 0) → 162_0_test_LE(x0, x0)
162_0_test_LE(x0, x1) → Cond_162_0_test_LE(x1 > 0, x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1) → 162_0_test_LE(x0, x1 + -1)
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(3): COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], x1[3] + 1)
(2): 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(x1[2] > 0, 471_0_test_Return, x0[2], x1[2])
(1): COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])

(1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1]* x0[2])∧(x1[1]* x1[2]))


(2) -> (3), if ((x1[2] > 0* TRUE)∧(x0[2]* x0[3])∧(x1[2]* x1[3]))



The set Q consists of the following terms:
56_0_test_Load(x0)
97_0_test_LE(x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1)
130_0_test_LE(x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1)
162_0_test_LE(x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(125) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 3 less nodes.

(126) TRUE

(127) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
56_0_test_Load(x0) → 97_0_test_LE(x0, x0)
97_0_test_LE(x0, x1) → Cond_97_0_test_LE(x1 > 0, x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1) → 97_0_test_LE(x0, x1 + -1)
97_0_test_LE(x0, 0) → 130_0_test_LE(x0, x0)
130_0_test_LE(x0, x1) → Cond_130_0_test_LE(x1 > 0, x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1) → 130_0_test_LE(x0, x1 + -1)
130_0_test_LE(x0, 0) → 162_0_test_LE(x0, x0)
162_0_test_LE(x0, x1) → Cond_162_0_test_LE(x1 > 0, x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1) → 162_0_test_LE(x0, x1 + -1)
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(0): 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(x1[0] < 100, x0[0], x1[0])
(1): COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])
(2): 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(x1[2] > 0, 471_0_test_Return, x0[2], x1[2])
(3): COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], x1[3] + 1)
(5): COND_48_0_MAIN_GE1(TRUE, x0[5], x1[5]) → 48_0_MAIN_GE(x0[5] - 1, x0[5] - 1)

(3) -> (0), if ((x0[3]* x0[0])∧(x1[3] + 1* x1[0]))


(5) -> (0), if ((x0[5] - 1* x0[0])∧(x0[5] - 1* x1[0]))


(0) -> (1), if ((x1[0] < 100* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1]* x0[2])∧(x1[1]* x1[2]))


(2) -> (3), if ((x1[2] > 0* TRUE)∧(x0[2]* x0[3])∧(x1[2]* x1[3]))



The set Q consists of the following terms:
56_0_test_Load(x0)
97_0_test_LE(x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1)
130_0_test_LE(x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1)
162_0_test_LE(x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(128) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(129) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
56_0_test_Load(x0) → 97_0_test_LE(x0, x0)
97_0_test_LE(x0, x1) → Cond_97_0_test_LE(x1 > 0, x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1) → 97_0_test_LE(x0, x1 + -1)
97_0_test_LE(x0, 0) → 130_0_test_LE(x0, x0)
130_0_test_LE(x0, x1) → Cond_130_0_test_LE(x1 > 0, x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1) → 130_0_test_LE(x0, x1 + -1)
130_0_test_LE(x0, 0) → 162_0_test_LE(x0, x0)
162_0_test_LE(x0, x1) → Cond_162_0_test_LE(x1 > 0, x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1) → 162_0_test_LE(x0, x1 + -1)
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(3): COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], x1[3] + 1)
(2): 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(x1[2] > 0, 471_0_test_Return, x0[2], x1[2])
(1): COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])
(0): 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(x1[0] < 100, x0[0], x1[0])

(3) -> (0), if ((x0[3]* x0[0])∧(x1[3] + 1* x1[0]))


(0) -> (1), if ((x1[0] < 100* TRUE)∧(x0[0]* x0[1])∧(x1[0]* x1[1]))


(1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1]* x0[2])∧(x1[1]* x1[2]))


(2) -> (3), if ((x1[2] > 0* TRUE)∧(x0[2]* x0[3])∧(x1[2]* x1[3]))



The set Q consists of the following terms:
56_0_test_Load(x0)
97_0_test_LE(x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1)
130_0_test_LE(x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1)
162_0_test_LE(x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(130) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1)) the following chains were created:
  • We consider the chain COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1)) which results in the following constraint:

    (1)    (COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3])≥NonInfC∧COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3])≥48_0_MAIN_GE(x0[3], +(x1[3], 1))∧(UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥))



    We simplified constraint (1) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (2)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[(-1)bso_37] ≥ 0)



    We simplified constraint (2) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (3)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[(-1)bso_37] ≥ 0)



    We simplified constraint (3) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (4)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧[(-1)bso_37] ≥ 0)



    We simplified constraint (4) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (5)    ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧0 = 0∧[(-1)bso_37] ≥ 0)







For Pair 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2]) the following chains were created:
  • We consider the chain 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2]), COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1)) which results in the following constraint:

    (6)    (>(x1[2], 0)=TRUEx0[2]=x0[3]x1[2]=x1[3]56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥NonInfC∧56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])∧(UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥))



    We simplified constraint (6) using rule (IV) which results in the following new constraint:

    (7)    (>(x1[2], 0)=TRUE56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥NonInfC∧56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2])≥COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])∧(UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥))



    We simplified constraint (7) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (8)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[2] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (9)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[2] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (10)    (x1[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-1)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[2] ≥ 0∧[(-1)bso_39] ≥ 0)



    We simplified constraint (10) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (11)    (x1[2] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-2)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[2] ≥ 0∧[(-1)bso_39] ≥ 0)







For Pair COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1]) the following chains were created:
  • We consider the chain COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1]) which results in the following constraint:

    (12)    (COND_48_0_MAIN_GE(TRUE, x0[1], x1[1])≥NonInfC∧COND_48_0_MAIN_GE(TRUE, x0[1], x1[1])≥56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])∧(UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥))



    We simplified constraint (12) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (13)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_41] ≥ 0)



    We simplified constraint (13) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (14)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_41] ≥ 0)



    We simplified constraint (14) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (15)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧[(-1)bso_41] ≥ 0)



    We simplified constraint (15) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (16)    ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧0 = 0∧[(-1)bso_41] ≥ 0)







For Pair 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0]) the following chains were created:
  • We consider the chain 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0]), COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1]) which results in the following constraint:

    (17)    (<(x1[0], 100)=TRUEx0[0]=x0[1]x1[0]=x1[1]48_0_MAIN_GE(x0[0], x1[0])≥NonInfC∧48_0_MAIN_GE(x0[0], x1[0])≥COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])∧(UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥))



    We simplified constraint (17) using rule (IV) which results in the following new constraint:

    (18)    (<(x1[0], 100)=TRUE48_0_MAIN_GE(x0[0], x1[0])≥NonInfC∧48_0_MAIN_GE(x0[0], x1[0])≥COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])∧(UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥))



    We simplified constraint (18) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (19)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_42] + [(-1)bni_42]x1[0] ≥ 0∧[1 + (-1)bso_43] ≥ 0)



    We simplified constraint (19) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (20)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_42] + [(-1)bni_42]x1[0] ≥ 0∧[1 + (-1)bso_43] ≥ 0)



    We simplified constraint (20) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (21)    ([99] + [-1]x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_42] + [(-1)bni_42]x1[0] ≥ 0∧[1 + (-1)bso_43] ≥ 0)



    We simplified constraint (21) using rule (IDP_SMT_SPLIT) which results in the following new constraints:

    (22)    ([99] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_42] + [bni_42]x1[0] ≥ 0∧[1 + (-1)bso_43] ≥ 0)


    (23)    ([99] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_42] + [(-1)bni_42]x1[0] ≥ 0∧[1 + (-1)bso_43] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1))
    • ((UIncreasing(48_0_MAIN_GE(x0[3], +(x1[3], 1))), ≥)∧0 = 0∧[(-1)bso_37] ≥ 0)

  • 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])
    • (x1[2] ≥ 0 ⇒ (UIncreasing(COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])), ≥)∧[(-2)bni_38 + (-1)Bound*bni_38] + [(-1)bni_38]x1[2] ≥ 0∧[(-1)bso_39] ≥ 0)

  • COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])
    • ((UIncreasing(56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])), ≥)∧0 = 0∧[(-1)bso_41] ≥ 0)

  • 48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])
    • ([99] + x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_42] + [bni_42]x1[0] ≥ 0∧[1 + (-1)bso_43] ≥ 0)
    • ([99] + [-1]x1[0] ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])), ≥)∧[(-1)Bound*bni_42] + [(-1)bni_42]x1[0] ≥ 0∧[1 + (-1)bso_43] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(56_0_test_Load(x1)) = 0   
POL(97_0_test_LE(x1, x2)) = 0   
POL(Cond_97_0_test_LE(x1, x2, x3)) = 0   
POL(>(x1, x2)) = 0   
POL(0) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(130_0_test_LE(x1, x2)) = 0   
POL(Cond_130_0_test_LE(x1, x2, x3)) = 0   
POL(162_0_test_LE(x1, x2)) = 0   
POL(Cond_162_0_test_LE(x1, x2, x3)) = 0   
POL(193_0_test_LE(x1, x2)) = 0   
POL(Cond_193_0_test_LE(x1, x2, x3)) = 0   
POL(221_0_test_LE(x1, x2)) = 0   
POL(Cond_221_0_test_LE(x1, x2, x3)) = 0   
POL(248_0_test_LE(x1, x2)) = 0   
POL(Cond_248_0_test_LE(x1, x2, x3)) = 0   
POL(285_0_test_LE(x1, x2)) = 0   
POL(Cond_285_0_test_LE(x1, x2, x3)) = 0   
POL(319_0_test_LE(x1, x2)) = 0   
POL(Cond_319_0_test_LE(x1, x2, x3)) = 0   
POL(354_0_test_LE(x1, x2)) = 0   
POL(Cond_354_0_test_LE(x1, x2, x3)) = 0   
POL(386_0_test_LE(x1, x2)) = 0   
POL(Cond_386_0_test_LE(x1, x2, x3)) = 0   
POL(426_0_test_LE(x1, x2)) = 0   
POL(Cond_426_0_test_LE(x1, x2, x3)) = 0   
POL(465_0_test_LE(x1)) = 0   
POL(471_0_test_Return) = 0   
POL(Cond_465_0_test_LE(x1, x2)) = 0   
POL(COND_56_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x4   
POL(48_0_MAIN_GE(x1, x2)) = [-1]x2   
POL(1) = [1]   
POL(56_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [-1]x1 + [-1]x3   
POL(COND_48_0_MAIN_GE(x1, x2, x3)) = [-1] + [-1]x3   
POL(<(x1, x2)) = 0   
POL(100) = [100]   

The following pairs are in P>:

48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])

The following pairs are in Pbound:

48_0_MAIN_GE(x0[0], x1[0]) → COND_48_0_MAIN_GE(<(x1[0], 100), x0[0], x1[0])

The following pairs are in P:

COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], +(x1[3], 1))
56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(>(x1[2], 0), 471_0_test_Return, x0[2], x1[2])
COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])

At least the following rules have been oriented under context sensitive arithmetic replacement:

56_0_test_Load(x0)197_0_test_LE(x0, x0)1
97_0_test_LE(x0, 0)1130_0_test_LE(x0, x0)1
97_0_test_LE(x0, +(x1, -1))1Cond_97_0_test_LE(TRUE, x0, x1)1
97_0_test_LE(x0, x1)1Cond_97_0_test_LE(>(x1, 0), x0, x1)1
130_0_test_LE(x0, 0)1162_0_test_LE(x0, x0)1
130_0_test_LE(x0, +(x1, -1))1Cond_130_0_test_LE(TRUE, x0, x1)1
Cond_130_0_test_LE(>(x1, 0), x0, x1)1130_0_test_LE(x0, x1)1
193_0_test_LE(x0, x0)1162_0_test_LE(x0, 0)1
162_0_test_LE(x0, +(x1, -1))1Cond_162_0_test_LE(TRUE, x0, x1)1
162_0_test_LE(x0, x1)1Cond_162_0_test_LE(>(x1, 0), x0, x1)1
221_0_test_LE(x0, x0)1193_0_test_LE(x0, 0)1
193_0_test_LE(x0, +(x1, -1))1Cond_193_0_test_LE(TRUE, x0, x1)1
193_0_test_LE(x0, x1)1Cond_193_0_test_LE(>(x1, 0), x0, x1)1
248_0_test_LE(x0, x0)1221_0_test_LE(x0, 0)1
221_0_test_LE(x0, +(x1, -1))1Cond_221_0_test_LE(TRUE, x0, x1)1
221_0_test_LE(x0, x1)1Cond_221_0_test_LE(>(x1, 0), x0, x1)1
248_0_test_LE(x0, 0)1285_0_test_LE(x0, x0)1
248_0_test_LE(x0, +(x1, -1))1Cond_248_0_test_LE(TRUE, x0, x1)1
Cond_248_0_test_LE(>(x1, 0), x0, x1)1248_0_test_LE(x0, x1)1
285_0_test_LE(x0, 0)1319_0_test_LE(x0, x0)1
Cond_285_0_test_LE(TRUE, x0, x1)1285_0_test_LE(x0, +(x1, -1))1
285_0_test_LE(x0, x1)1Cond_285_0_test_LE(>(x1, 0), x0, x1)1
354_0_test_LE(x0, x0)1319_0_test_LE(x0, 0)1
Cond_319_0_test_LE(TRUE, x0, x1)1319_0_test_LE(x0, +(x1, -1))1
Cond_319_0_test_LE(>(x1, 0), x0, x1)1319_0_test_LE(x0, x1)1
386_0_test_LE(x0, x0)1354_0_test_LE(x0, 0)1
Cond_354_0_test_LE(TRUE, x0, x1)1354_0_test_LE(x0, +(x1, -1))1
354_0_test_LE(x0, x1)1Cond_354_0_test_LE(>(x1, 0), x0, x1)1
426_0_test_LE(x0, x0)1386_0_test_LE(x0, 0)1
Cond_386_0_test_LE(TRUE, x0, x1)1386_0_test_LE(x0, +(x1, -1))1
386_0_test_LE(x0, x1)1Cond_386_0_test_LE(>(x1, 0), x0, x1)1
465_0_test_LE(x0)1426_0_test_LE(x0, 0)1
426_0_test_LE(x0, +(x1, -1))1Cond_426_0_test_LE(TRUE, x0, x1)1
Cond_426_0_test_LE(>(x1, 0), x0, x1)1426_0_test_LE(x0, x1)1
465_0_test_LE(0)1471_0_test_Return1
465_0_test_LE(x0)1Cond_465_0_test_LE(>(x0, 0), x0)1
Cond_465_0_test_LE(TRUE, x0)1465_0_test_LE(+(x0, -1))1

(131) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Integer


The ITRS R consists of the following rules:
56_0_test_Load(x0) → 97_0_test_LE(x0, x0)
97_0_test_LE(x0, x1) → Cond_97_0_test_LE(x1 > 0, x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1) → 97_0_test_LE(x0, x1 + -1)
97_0_test_LE(x0, 0) → 130_0_test_LE(x0, x0)
130_0_test_LE(x0, x1) → Cond_130_0_test_LE(x1 > 0, x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1) → 130_0_test_LE(x0, x1 + -1)
130_0_test_LE(x0, 0) → 162_0_test_LE(x0, x0)
162_0_test_LE(x0, x1) → Cond_162_0_test_LE(x1 > 0, x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1) → 162_0_test_LE(x0, x1 + -1)
162_0_test_LE(x0, 0) → 193_0_test_LE(x0, x0)
193_0_test_LE(x0, x1) → Cond_193_0_test_LE(x1 > 0, x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1) → 193_0_test_LE(x0, x1 + -1)
193_0_test_LE(x0, 0) → 221_0_test_LE(x0, x0)
221_0_test_LE(x0, x1) → Cond_221_0_test_LE(x1 > 0, x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1) → 221_0_test_LE(x0, x1 + -1)
221_0_test_LE(x0, 0) → 248_0_test_LE(x0, x0)
248_0_test_LE(x0, x1) → Cond_248_0_test_LE(x1 > 0, x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1) → 248_0_test_LE(x0, x1 + -1)
248_0_test_LE(x0, 0) → 285_0_test_LE(x0, x0)
285_0_test_LE(x0, x1) → Cond_285_0_test_LE(x1 > 0, x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1) → 285_0_test_LE(x0, x1 + -1)
285_0_test_LE(x0, 0) → 319_0_test_LE(x0, x0)
319_0_test_LE(x0, x1) → Cond_319_0_test_LE(x1 > 0, x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1) → 319_0_test_LE(x0, x1 + -1)
319_0_test_LE(x0, 0) → 354_0_test_LE(x0, x0)
354_0_test_LE(x0, x1) → Cond_354_0_test_LE(x1 > 0, x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1) → 354_0_test_LE(x0, x1 + -1)
354_0_test_LE(x0, 0) → 386_0_test_LE(x0, x0)
386_0_test_LE(x0, x1) → Cond_386_0_test_LE(x1 > 0, x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1) → 386_0_test_LE(x0, x1 + -1)
386_0_test_LE(x0, 0) → 426_0_test_LE(x0, x0)
426_0_test_LE(x0, x1) → Cond_426_0_test_LE(x1 > 0, x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1) → 426_0_test_LE(x0, x1 + -1)
426_0_test_LE(x0, 0) → 465_0_test_LE(x0)
465_0_test_LE(0) → 471_0_test_Return
465_0_test_LE(x0) → Cond_465_0_test_LE(x0 > 0, x0)
Cond_465_0_test_LE(TRUE, x0) → 465_0_test_LE(x0 + -1)

The integer pair graph contains the following rules and edges:
(3): COND_56_1_MAIN_INVOKEMETHOD(TRUE, 471_0_test_Return, x0[3], x1[3]) → 48_0_MAIN_GE(x0[3], x1[3] + 1)
(2): 56_1_MAIN_INVOKEMETHOD(471_0_test_Return, x0[2], x1[2]) → COND_56_1_MAIN_INVOKEMETHOD(x1[2] > 0, 471_0_test_Return, x0[2], x1[2])
(1): COND_48_0_MAIN_GE(TRUE, x0[1], x1[1]) → 56_1_MAIN_INVOKEMETHOD(56_0_test_Load(x1[1]), x0[1], x1[1])

(1) -> (2), if ((56_0_test_Load(x1[1]) →* 471_0_test_Return)∧(x0[1]* x0[2])∧(x1[1]* x1[2]))


(2) -> (3), if ((x1[2] > 0* TRUE)∧(x0[2]* x0[3])∧(x1[2]* x1[3]))



The set Q consists of the following terms:
56_0_test_Load(x0)
97_0_test_LE(x0, x1)
Cond_97_0_test_LE(TRUE, x0, x1)
130_0_test_LE(x0, x1)
Cond_130_0_test_LE(TRUE, x0, x1)
162_0_test_LE(x0, x1)
Cond_162_0_test_LE(TRUE, x0, x1)
193_0_test_LE(x0, x1)
Cond_193_0_test_LE(TRUE, x0, x1)
221_0_test_LE(x0, x1)
Cond_221_0_test_LE(TRUE, x0, x1)
248_0_test_LE(x0, x1)
Cond_248_0_test_LE(TRUE, x0, x1)
285_0_test_LE(x0, x1)
Cond_285_0_test_LE(TRUE, x0, x1)
319_0_test_LE(x0, x1)
Cond_319_0_test_LE(TRUE, x0, x1)
354_0_test_LE(x0, x1)
Cond_354_0_test_LE(TRUE, x0, x1)
386_0_test_LE(x0, x1)
Cond_386_0_test_LE(TRUE, x0, x1)
426_0_test_LE(x0, x1)
Cond_426_0_test_LE(TRUE, x0, x1)
465_0_test_LE(x0)
Cond_465_0_test_LE(TRUE, x0)

(132) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 3 less nodes.

(133) TRUE